Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 1.99 KB

12.md

File metadata and controls

49 lines (37 loc) · 1.99 KB

【中规中矩】12. 整数转罗马数字

解题思路

只需要建立一个大表格,分别对应1-9的罗马数字,10-90的罗马数字,100-900的罗马数字,1000-3000的罗马数字(题目规定最大数字为3999)。然后取出整数千百十个位上的数字作为下标映射到对应的罗马数字即可。

代码

class Solution {
public:
    string intToRoman(int num) {
        string I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
        string X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
        string C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
        string M[] = {"", "M", "MM", "MMM"};

        return M[num / 1000] + C[(num % 1000) / 100] + X[(num % 100) / 10] + I[num % 10];
    }
};
class Solution(object):
    def intToRoman(self, num):
        I = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"];
        X = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"];
        C = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
        M = ["", "M", "MM", "MMM"];

        return M[num // 1000] + C[(num % 1000) // 100] + X[(num % 100) // 10] + I[num % 10];
class Solution:
    def intToRoman(self, num: int) -> str:
        I = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"];
        X = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"];
        C = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
        M = ["", "M", "MM", "MMM"];

        return M[num // 1000] + C[(num % 1000) // 100] + X[(num % 100) // 10] + I[num % 10];

点我赞赏作者

github 题解

Image