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) {
int index = s.size();
if (index < 1)
return 0;
map<char, int> m;
m['I'] = 1;
m['V'] = 5;
m['X'] = 10;
m['L'] = 50;
m['C'] = 100;
m['D'] = 500;
m['M'] = 1000;
index--;
int sum = m[s[index]];
while (index){
index--;
if (m[s[index + 1]] > m[s[index]]){
sum -= m[s[index]];
}
else{
sum += m[s[index]];
}
}
return sum;
}
};