美文网首页
leetcode12. 整数转罗马数字

leetcode12. 整数转罗马数字

作者: 今天不想掉头发 | 来源:发表于2019-09-26 18:49 被阅读0次

贪心算法,先通过map将罗马字符和数字一一对应,进行有序排列,然后从最大的数字开始,进行数字到罗马字符的转换

class Solution {
public:
    string intToRoman(int num) {
        map<int, string> map = {{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"}};
        auto reverse_iter = map.rbegin();
        string res;
        while (reverse_iter != map.rend()) {
            if (num >= reverse_iter->first) {
                num -= reverse_iter->first;
                res += reverse_iter->second;
            } else {
                reverse_iter++;
            }
        }
        return res;
    }
};

相关文章

网友评论

      本文标题:leetcode12. 整数转罗马数字

      本文链接:https://www.haomeiwen.com/subject/obynuctx.html