原题链接:Leecode 12. 整数转罗马数字
代码一:
class Solution {
public:
string s;
void fun(int num)
{
while(num)
{
if(num>=1000)
{
s+="M";num-=1000;
}
else if(num>=900)
{
s+="CM";num-=900;
}
else if(num>=500)
{
s+="D";num-=500;
}
else if(num>=400)
{
s+="CD";num-=400;
}
else if(num>=100)
{
s+="C";num-=100;
}
else if(num>=90)
{
s+="XC";num-=90;
}
else if(num>=50)
{
s+="L";num-=50;
}
else if(num>=40)
{
s+="XL";num-=40;
}
else if(num>=10)
{
s+="X";num-=10;
}
else if(num>=9)
{
s+="IX";num-=9;
}
else if(num>=5)
{
s+="V";num-=5;
}
else if(num>=4)
{
s+="IV";num-=4;
}
else if(num>=1)
{
s+="I";num-=1;
}
}
}
string intToRoman(int num) {
fun(num);
return s;
}
};
代码二:
class Solution {
public:
string intToRoman(int num) {
string s;
int n[13]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
string str[13]={"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
for(int i=0;i<13;i++)
{
while(num>=n[i])
{
num-=n[i];
s+=str[i];
}
if(!num)
break;
}
return s;
}
};
代码三:
class Solution {
public:
string intToRoman(int num) {
string s1[]={"","M","MM","MMM"};
string s2[]={"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
string s3[]={"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
string s4[]={"","I","II","III","IV","V","VI","VII","VIII","IX"};
return s1[num/1000]+s2[num%1000/100]+s3[num%100/10]+s4[num%10];
}
};