Integer to Roman
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
思路:
没有思路。
题解:
class Solution {
public:
string intToRoman(int num) {
static const string SYMBOLS=" MDCLXVI";
string ret;
int start_divisor = 1000;
int iter = 0;
while(start_divisor != 0)
{
// digit separation
int quotient = num / start_divisor;
num -= quotient * start_divisor;
start_divisor /= 10;
if (quotient == 9)
{
ret += SYMBOLS[iter + 2];
ret += SYMBOLS[iter];
}
else if (quotient > 5)
{
ret += SYMBOLS[iter + 1];
ret += string(quotient - 5, SYMBOLS[iter + 2]);
} else if (quotient == 5)
ret += SYMBOLS[iter + 1];
else if (quotient == 4)
{
ret += SYMBOLS[iter + 2];
ret += SYMBOLS[iter + 1];
} else if (quotient > 0)
ret += string(quotient, SYMBOLS[iter + 2]);
iter += 2;
}
return ret;
}
};