(中等题))
【题目描述】
【示例】
示例 1:
输入: 3
输出: “III”
示例 2:
输入: 4
输出: “IV”
]示例 3:
输入: 9
输出: “IX”
]示例 4:
输入: 58
输出: “LVIII”
解释: L = 50, V = 5, III = 3.
示例 5:
输入: 1994
输出: “MCMXCIV”
解释: M = 1000, CM = 900, XC = 90, IV = 4.
提示:
1 ≤ n u m ≤ 3999 1 \le num \le 3999 1≤num≤3999
【贪心】
【思路】
非常简单的思路:优先匹配较大的数字,然后把它减掉,一路往下匹配就可以。
【代码】
class Solution {
public:
string intToRoman(int num) {
string ans="";
while(num>=1000){
ans+="M";
num-=1000;
}
if(num>=900){
ans+="CM";
num-=900;
}
while(num>=500){
ans+="D";
num-=500;
}
if(num>=400){
ans+="CD";
num-=400;
}
while(num>=100){
ans+="C";
num-=100;
}
if(num>=90){
ans+="XC";
num-=90;
}
while(num>=50){
ans+="L";
num-=50;
}
if(num>=40){
ans+="XL";
num-=40;
}
while(num>=10){
ans+="X";
num-=10;
}
if(num>=9){
ans+="IX";
num-=9;
}
while(num>=5){
ans+="V";
num-=5;
}
if(num>=4){
ans+="IV";
num-=4;
}
while(num>=1){
ans+="I";
num-=1;
}
return ans;
}
};
运行结果: