1、Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
class Solution {
public:
int romanToInt(string s) {
if(s.size()==0)
return 0;
map<char,int> romanMap{{'M',1000},{'D',500},{'C',100},{'L',50},{'X',10},{'V',5},{'I',1}};
auto beg=s.begin();
int result=0;
char prev=*beg++;;
while(beg!=s.end())
{
if(romanMap[prev]<romanMap[*beg])
result=result-romanMap[prev];
else
result+=romanMap[prev];
prev=*beg++;
}
return result+romanMap[prev];
}
};
2、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) {
string thos[] = {"","M","MM","MMM"};
string huns[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
string tens[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
string ones[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
string roman;
roman+=thos[num/1000];
num%=1000;
roman+=huns[num/100];
num%=100;
roman+=tens[num/10];
num%=10;
roman+=ones[num];
return roman;
}
};