首先还是建议看一下题解,了解一下罗马数字的表示规则。
整数转罗马数字 - 整数转罗马数字 - 力扣(LeetCode)
贪心
每次都尽可能选择最大的,这也是罗马数字表示的一种规则
class Solution {
public:
string intToRoman(int num) {
vector<int> a = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
vector<string> b = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
string res("");
for(int i = 0; i < a.size(); ++i){
while(a[i] <= num){
num -= a[i]; //选一个就减去一个
res += b[i];
}
}
return res;
}
};