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 };

 

posted @ 2014-06-03 16:17  阿杰的专栏  阅读(107)  评论(0编辑  收藏  举报