LeetCode 热题 100 总结——整数转罗马数字

98 阅读1分钟

思路

讲述看到这一题的思路
将整数逐步分解,例如,327=3100+102+5+1*2,分解出来再依次拼接即可

解题方法

描述你的解题方法
从高位开始分解,遍历找到能够分解得到的罗马数字,例如327的百位,然后拼接一个100对应的C,同时减去已映射的值,高位第一位分解(映射)完后,接着循环映射第二位

复杂度

时间复杂度:

添加时间复杂度, 示例: O(n)O(n)O(n)
O(n2)O(n2)O(n2)

class Solution {
public:
    string intToRoman(int num) {
        vector<int> values = {
            1000, 900, 500, 400, 100, 90, 50,
            40,   10,  9,   5,   4,   1}; // 数值数组,用于计算
        vector<string> meps = {
            "M",  "CM", "D",  "CD", "C",  "XC", "L",
            "XL", "X",  "IX", "V",  "IV", "I"}; // 罗马数字数组,用于映射

        string result = "";
        for (int i = 0; i < 13; i++) {

            while (num >= values[i]) {
                result += meps[i];//添加对应的罗马数字
                num -= values[i];//从输入的数字中减去已映射的值
            }
        }
        return result;
    }
};
```
```