[LeetCode] Integer to Roman 解题报告

来源:互联网 发布:知耻而后勇是什么意思 编辑:程序博客网 时间:2024/05/29 04:05

[题目]
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.

[中文翻译]
给定一个整数,将其转换为罗马数字。
输入保证在1到3999的范围内。

[解题思路]
一开始错了几次,然后发现罗马数字的规则还是挺复杂的。
原本是打算找一下随着数值增加,对应的罗马数字变化规律的,似乎不太靠谱。
好在输入保证在1到3999范围内,对于每一个进制位上,罗马数字的展开还是有规则的,所以照着规则写就好了。
规则见代码就行,这里就不详细叙述了。

[C++代码]

class Solution {public:    string intToRoman(int num) {        string res;        switch (num / 1000) {        case 1:            res = "M";            break;        case 2:            res = "MM";            break;        case 3:            res = "MMM";            break;        default:            break;        }        num = num % 1000;        switch (num / 100) {        case 1:            res += "C";            break;        case 2:            res += "CC";            break;        case 3:            res += "CCC";            break;        case 4:            res += "CD";            break;        case 5:            res += "D";            break;        case 6:            res += "DC";            break;        case 7:            res += "DCC";            break;        case 8:            res += "DCCC";            break;        case 9:            res += "CM";            break;        default:            break;        }        num = num % 100;        switch (num / 10) {        case 1:            res += "X";            break;        case 2:            res += "XX";            break;        case 3:            res += "XXX";            break;        case 4:            res += "XL";            break;        case 5:            res += "L";            break;        case 6:            res += "LX";            break;        case 7:            res += "LXX";            break;        case 8:            res += "LXXX";            break;        case 9:            res += "XC";            break;        default:            break;        }        num = num % 10;        switch (num) {        case 1:            res += "I";            break;        case 2:            res += "II";            break;        case 3:            res += "III";            break;        case 4:            res += "IV";            break;        case 5:            res += "V";            break;        case 6:            res += "VI";            break;        case 7:            res += "VII";            break;        case 8:            res += "VIII";            break;        case 9:            res += "IX";            break;        default:            break;        }        return res;    }};
0 0
原创粉丝点击