解题思路:
哈希表,将所有字符放入哈希表haxi中,<string, int>
从左往右一个一个字符计算,对于每一个字符,判断其和后一个字符所对应的数字数值大小,大于则加,小于则减。
C++:
class Solution {
public:
int romanToInt(string s) {
unordered_map<char, int> haxi = {
{'I', 1},
{'V', 5},
{'X', 10},
{'L', 50},
{'C', 100},
{'D', 500},
{'M', 1000},
};
int ans = 0;
int n = s.length();
for (int i = 0; i < n; ++i) {
int value = haxi[s[i]];
if (i < n-1 && value < haxi[s[i+1]]) {
ans -= value;
} else{
ans += value;
}
}
return ans;
}
};