LeetCode 12. Integer to Roman
将(1-3999)的阿拉伯数字转化为罗马数字。
罗马数字中,I、V、X、L、C、D和M,分别表示1、5、10、50、100、500和1000。
只需要注意4和9这两个数字就可以了
class Solution
{
public:
string intToRoman(int num)
{
string str;
string s = "1IVXLCDM";
int l = 1000, k = 4;
while(l > 0)
{
int t = num / l;
if(t != 0)
{
if(t < 4)
{
str += string(t, s[2*k-1]);
}
else if(t == 4)
{
str += s[2*k-1];
str += s[2*k];
}
else if(t == 9)
{
str += s[2*k-1];
str += s[2*k+1];
}
else
{
str += s[2*k];
str += string(t-5, s[2*k-1]);
}
}
num %= l;
l /= 10;
k --;
}
return str;
}
};