[LeetCode]12. Integer to Roman

原题链接:https://leetcode.com/problems/integer-to-roman/description/

[LeetCode]12. Integer to Roman

给定数字输出罗马数字

我的实现:

class Solution {
public:
    string intToRoman(int num) {
        int temp = num;
        string result = "";
        while (temp > 0) {
            if (temp >= 1000) {
                switch(temp / 1000) {
                    case 1:
                        result += "M";
                        break;
                    case 2:
                        result += "MM";
                        break;
                    case 3:
                        result += "MMM";
                        break;
                    default:
                        return "out of range";
                }
                temp = temp - (int)(temp / 1000) * 1000;
            } else if (temp >= 100 && temp < 1000) {
                switch (temp / 100) {
                    case 1:
                        result += "C";
                        break;
                    case 2:
                        result += "CC";
                        break;
                    case 3:
                        result += "CCC";
                        break;
                    case 4:
                        result += "CD";
                        break;
                    case 5:
                        result += "D";
                        break;
                    case 6:
                        result += "DC";
                        break;
                    case 7:
                        result += "DCC";
                        break;
                    case 8:
                        result += "DCCC";
                        break;
                    case 9:
                        result += "CM";
                        break;
                }
                temp = temp - (int)(temp / 100) * 100;
            } else if (temp >= 10 && temp < 100) {
                switch (temp / 10) {
                    case 1:
                        result += "X";
                        break;
                    case 2:
                        result += "XX";
                        break;
                    case 3:
                        result += "XXX";
                        break;
                    case 4:
                        result += "XL";
                        break;
                    case 5:
                        result += "L";
                        break;
                    case 6:
                        result += "LX";
                        break;
                    case 7:
                        result += "LXX";
                        break;
                    case 8:
                        result += "LXXX";
                        break;
                    case 9:
                        result += "XC";
                        break;
                }
                temp = temp - (int)(temp / 10) * 10;
            } else if (temp >= 1 && temp < 10) {
                switch (temp / 1) {
                    case 1:
                        result += "I";
                        break;
                    case 2:
                        result += "II";
                        break;
                    case 3:
                        result += "III";
                        break;
                    case 4:
                        result += "IV";
                        break;
                    case 5:
                        result += "V";
                        break;
                    case 6:
                        result += "VI";
                        break;
                    case 7:
                        result += "VII";
                        break;
                    case 8:
                        result += "VIII";
                        break;
                    case 9:
                        result += "IX";
                        break;
                }
                temp = temp - (int)(temp / 1) * 1;
            }
        }
        
        return result;
    }
};

总结:主要就是注意罗马数字的规则