1. 题目来源
2. 题目解析
方法一:找规律+模拟
纯模拟题,大不了暴力打表。只不过这个找规律的思想还是相当值得学习的。
时间复杂度:
O
(
1
)
O(1)
O(1)
空间复杂度:
O
(
1
)
O(1)
O(1)
代码:
class Solution {
public:
string intToRoman(int num) {
int val[] = {
1000,
900, 500, 400, 100,
90, 50, 40, 10,
9, 5, 4, 1
};
string s[] = {
"M",
"CM", "D", "CD", "C",
"XC", "L", "XL", "X",
"IX", "V", "IV", "I",
};
string res;
for (int i = 0; i < 13; ++i) { // i从小到大
while (num >= val[i]) {
num -= val[i];
res += s[i];
}
}
return res;
}
};