LeetCode题解——Integer to Roman

题目

将整数转换为罗马数字。罗马数字规则可以参考: 维基百科-罗马数字

 

解法

类似于进制转换,从大的基数开始,求整数对基数的商和余,来进行转换。

 

代码

 1 class Solution {  2 public:  3     string intToRoman(int num) {  4         string result;  5         const int radix[] = {1000, 900,  500, 400,  100,  90,  50,  40,   10,   9,    5,   4,    1 };  //基数,添加了40、90等计算之后的结果

 6         const string sym[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};  //各基数对应的罗马字符

 7         

 8         for(int i = 0; num > 0; ++i)  9  { 10             int count = num / radix[i];  //当前基数的个数

11             num %= radix[i]; 12             

13             for( ; count > 0; --count) 14                 result += sym[i]; 15  } 16         

17         return result; 18  } 19 };

 

你可能感兴趣的:(LeetCode)