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) {
map<char,int>roman;
int result=0;
roman['I']=1;
roman['V']=5;
roman['X']=10;
roman['L']=50;
roman['C']=100;
roman['D']=500;
roman['M']=1000;
for(int i=s.length()-1;i>=0;i--){
if(i==s.length()-1){
result=roman[s[i]];
continue;
}
if(roman[s[i]]>=roman[s[i+1]]) //右加左减
result+=roman[s[i]];
else
result-=roman[s[i]];
}
return result;
}
};