Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
和整數轉羅馬數字一樣,根據轉換規則轉換。
class Solution {
public:
//分析最近的兩個字符,如果i字符比i-1字符小,那麼此時應該是sum += value[i]
//否則,就應該向4類似的處理,但是由於value[i - 1],在i-1的時候已經加了一次,
//所以sum = sum - value[i - 1] + value[i] - value[i - 1];
int romanToInt(string s) {
int len = s.length();
unordered_map<char, int> mask;
mask['I'] = 1;
mask['V'] = 5;
mask['X'] = 10;
mask['L'] = 50;
mask['C'] = 100;
mask['D'] = 500;
mask['M'] = 1000;
int sum = mask[s[0]];
for(int i = 1; i < len; i++)
{
if(mask[s[i - 1]] >= mask[s[i]])
{
sum += mask[s[i]];
}
else
{
sum += mask[s[i]] - 2 * mask[s[i - 1]];
}
}
return sum;
}
};