难点是罗马数字的规则
Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9
基本字符
I-1
V-5
X-10
L-50
C-100
D-500
M-1000
按千位百位十位个位分开转换
class Solution {
public:
string AA[4] = { "IV","XL","CD","M" };
string Get(int n, int d) {
switch (n)
{
case 0:
case 1:
case 2:
case 3: return string(n, AA[d][0]);
case 4: return string(1, AA[d][0]) + AA[d][1];
case 5:
case 6:
case 7:
case 8: return AA[d][1] + string(n - 5, AA[d][0]);
default: return string(1, AA[d][0]) + AA[d + 1][0];
break;
}
}
string intToRoman(int num) {
string ans;
ans += Get(num / 1000, 3);
num %= 1000;
ans += Get(num / 100, 2);
num %= 100;
ans += Get(num / 10, 1);
num %= 10;
ans += Get(num, 0);
return ans;
}
};