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