个人思路总结:
如果一一按照区间进行条件判断未免会过于复杂。因此我们分别对每个区间边界值及其对应的罗马数字建立数组。然后从大到小依次与待转换数字比较。
代码如下:
class Solution {
public:
string intToRoman(int num) {
int num_range[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
string reps[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
string result;
for(int i=0;i<13;i++)
{
while(num>=num_range[i]) //这里的循环必不可少(如200,如果没有while,最终将输出CXCX)
{
num -= num_range[i];
result += reps[i];
}
}
return result;
}
};