class Solution {
public:
string intToRoman(int num) {
// 把阿拉伯数字与罗马数字可能出现的所有情况和对应关系,放在两个数组中
// 并且按照阿拉伯数字的大小降序排列,这是贪心选择思想
int nums[12] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
string romans[12] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
string ans;
int index = 0;
while (index = nums[index]) {
// 注意:这里是等于号,表示尽量使用大的"面值"
ans += romans[index];
num -= nums[index];
}
++index;
}
return ans;
}
};