LeetCode/solutions/12. Integer to Roman.md

1018 B

12. Integer to Roman

思路

阿拉伯数字转罗马数字。 按照题意将所有可能的罗马数字列出来,再从大到小看能不能将阿拉伯数字转换成罗马数字。详细过程见代码。

C++

class Solution {
public:
    string intToRoman(int num) {
        map<int, string>int2rom;
        string res = "";
        int nums[13] = {1,4,5,9,10,40,50,90,100,400,500,900,1000};
        int2rom[1] = "I";
        int2rom[5] = "V";
        int2rom[10] = "X";
        int2rom[50] = "L";
        int2rom[100] = "C";
        int2rom[500] = "D";
        int2rom[1000] = "M";
        int2rom[4] = "IV";
        int2rom[9] = "IX";
        int2rom[40] = "XL";
        int2rom[90] = "XC";
        int2rom[400] = "CD";
        int2rom[900] = "CM";
        for(int i = 12; i >= 0; i--){
            int tmp = num / nums[i];
            while(tmp--) res += int2rom[nums[i]];
            num %= nums[i];
        }
        return res;
    }
};