细节:
Roman数字转化成阿拉伯数字规则:
1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
class Solution {
public:
inline int map(const char c) {
switch (c) {
case 'I':
return 1;
break;
case 'V':
return 5;
break;
case 'X':
return 10;
break;
case 'L':
return 50;
break;
case 'C':
return 100;
break;
case 'D':
return 500;
break;
case 'M':
return 1000;
break;
default:
return 0;
break;
}
}
//Roman to Integer
int romanToInt(string s) {
size_t size = s. size();
int result = 0;
for(size_t i = 0; i < size; i++) {
if(i > 0 && map(s[i]) > map(s[i-1])) {
result += (map(s[i]) - 2*map(s[i-1]));
}else {
result += map(s[i]);
}
}
return result;
}
};