Roman to Integer
Q:Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
A:首先建立字符到数字的map.其次,分析罗马数字组成的规则,从字符串后面往前看,如果
if(dict[s[i+1]]>dict[s[i]])
sum-=dict[s[i]];
else
sum+=dict[s[i]];
int romanToInt(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(s.empty())
return 0;
map<char,int> dict;
dict['I'] = 1;
dict['V'] = 5;
dict['X'] = 10;
dict['L'] = 50;
dict['C'] = 100;
dict['D'] = 500;
dict['M'] = 1000;
int n = s.size();
int sum = dict[s[n-1]];
for(int i=n-2;i>=0;i--)
{
if(dict[s[i+1]]>dict[s[i]])
sum-=dict[s[i]];
else
sum+=dict[s[i]];
}
return sum;
}
浙公网安备 33010602011771号