Interger To Roman
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
不喜欢写太多的map映射,所以仿照Roman To Integer写了如下。
class Solution {
public:
string intToRoman(int num) {
map<int,char> m;
m[1]='I';
m[5]='V';
m[10]='X';
m[50]='L';
m[100]='C';
m[500]='D';
m[1000]='M';
string ret="";
int k=1000;
while(num)
{
int cur=num/k;
if(cur!=0)
{
if(cur==9)
{
ret.push_back(m[k]);
ret.push_back(m[k*10]);
cur=0;
}
else if(cur>=5)
{
ret.push_back(m[5*k]);
cur-=5;
while(cur)
{
ret.push_back(m[k]);
cur--;
}
}
else if(cur==4)
{
ret.push_back(m[k]);
ret.push_back(m[5*k]);
cur-=4;
}
while(cur)
{
ret.push_back(m[k]);
cur--;
}
}
num%=k;
k/=10;
}
return ret;
}
};