思路
讲述看到这一题的思路
将整数逐步分解,例如,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;
}
};
```
```