题目链接:click~
/*题意:给出一串罗马数字,转化成阿拉伯数学。罗马数字值为1~3999*/
/**
*思路:注意处理比较特殊的罗马数字,IV,IX,XL,XC,CD,CM,这些组合的值都是
* 右边较大的数字减去左边较小的数字。
*
*/
class Solution {
public:
int romanToInt(string s) {
map<char,int> mp = {{'I',1}, {'V',5}, {'X',10}, {'L',50}, {'C',100}, {'D',500}, {'M',1000}};
int sum = mp[s[s.size()-1]];
for(int i = s.size()-2; i >= 0; i --) {
if(mp[s[i]] >= mp[s[i+1]])//处理由两个字符组成的数字
sum += mp[s[i]]; //左边的数字比右边的数字大
else
sum -= mp[s[i]]; //左边的数字比右边的数字小
}
return sum;
}
};