题目链接
题目大意
题目已经讲得很明确了。
解题思路
总共有 13 个数字对应不同的符号,这里用 map 进行映射,注意到 map 内部是按照键值由小到大自动存储的,故在创建时使用了 grater 要求按键值从大到小存储,然后使用了贪心的思想,代码如下。
class Solution {
public:
string intToRoman(int num) {
map <int, string, greater<int> > roma {{1, "I"}, {4, "IV"}, {5, "V"}, \
{9, "IX"}, {10, "X"}, {40, "XL"}, {50, "L"}, {90, "XC"}, {100, "C"}, \
{400, "CD"}, {500, "D"}, {900, "CM"}, {1000, "M"}};
string ans;
for (auto it = roma.begin(); it != roma.end(); it++) {
while (num >= it->first) {
ans += it->second;
num -= it->first;
}
}
return ans;
}
};
解题感悟
1、国庆快乐呀,祖国七十岁生日快乐!