题目如下:
解题思路:
- 题意很简单,最基本的有 1,5,10,50,100,500,1000,其他的需要特殊处理的有 4,9,49,90,400,900。
- 所以建立映射关系 {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1} ,依次从大到小检查即可。
代码如下:
class Solution {
public:
string intToRoman(int num) {
//建立映射关系
int values[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
string roman[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
string res;
for(int i=0; i<13; i++){
while(num>=values[i]){
num -= values[i];
res += roman[i];
}
}
return res;
}
};