代码
class Solution {
public:
string intToRoman(int num) {
if(num<1||num>3999)
return "";
int digit = 1000;
vector<int> digits;
while(digit>0)
{
digits.push_back(num/digit);
num %= digit;
digit /= 10;
}
string res = "";
res += intToRomanHelper(digits[0], 'M', ' ', ' ');
res += intToRomanHelper(digits[1], 'C', 'D', 'M');
res += intToRomanHelper(digits[2], 'X', 'L', 'C');
res += intToRomanHelper(digits[3], 'I', 'V', 'X');
return res;
}
string intToRomanHelper(int digit, char one, char five, char ten)
{
string temp = "";
switch(digit)
{
case 9:
temp += one;
temp += ten;
break;
case 8:
case 7:
case 6:
case 5:
temp += five;
for(int i = 5; i < digit; ++i)
temp += one;
break;
case 4:
temp += one;
temp += five;
break;
case 3:
case 2:
case 1:
for(int i = 0; i < digit; ++i)
temp += one;
break;
default:
break;
}
return temp;
}
};