响应式网站简单模板,云系统wordpress,请人代做谷歌外贸网站,收费下载网站源码力扣 12. 整数转罗马数字 解题思路 当某个位数的某个数不为4或9时#xff0c;高位对应的字符总是在低位对应的字符前面。只有当该数为4或9时#xff0c;低位对应的字符在高位前面。 根据这一特性#xff0c;我们进行分类讨论。
1.当数为4时#xff0c;则对应的罗马数为 10 …力扣 12. 整数转罗马数字 解题思路 当某个位数的某个数不为4或9时高位对应的字符总是在低位对应的字符前面。只有当该数为4或9时低位对应的字符在高位前面。 根据这一特性我们进行分类讨论。
1.当数为4时则对应的罗马数为 10 ^ 幂次对应该数位的次数加上5 * 10 ^ 幂次。
如40则对应的罗马数为 X10L50。
2.当数为9时则对应的罗马数为 10 ^ 幂次对应该数位的次数加上5 * 10 ^ 幂次。
如90则对应的罗马数为 X10C100。
3.当数为其他时如果大于5则先加上 5 * 10 ^ 幂次对应的罗马数再加上 除5余数个数的 10^幂次对应的罗马数。如8对应的罗马数为 V5对应的罗马数III3个1对应的罗马数实现代码
class Solution {
public:string intToRoman(int num) {int quotient 1; //当前位数的幂次string resStr ;while(num ! 0){int mod num % 10;string str;if(mod 9){str.append(1, GetRoman(quotient));str.append(1, GetRoman(10 * quotient));}else if(mod 4){str.append(1,GetRoman(quotient));str.append(1, GetRoman(5 * quotient));}else{if(mod 5){str.append(1, GetRoman(5 * quotient));}mod num % 5;char ch GetRoman(quotient);for(int i 1; i mod; i)str.append(1, ch);}resStr str resStr;quotient * 10;num / 10;}return resStr;}char GetRoman(int value){char res;switch (value){case 1:res I;break;case 5:res V;break;case 10:res X;break;case 50:res L;break;case 100:res C;break;case 500:res D;break;case 1000:res M;break;default:break;}return res;}
};