題目鏈接: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;
}
};