根据前后字母代表数值大小,确定是加上还是减去该值(罗马数字的辨识规则)
把字母映射成一个数字:使用哈希表 "unordered_map"
然后从前往后枚举每一个字符,比较大小,确定加上还是减去这个值
class Solution {
public:
int romanToInt(string s) {
//开一个哈希表,把字母映射成数字
unordered_map<char, int> hash;
hash['I'] = 1, hash['V'] = 5;
hash['X'] = 10, hash['L'] = 50;
hash['C'] = 100, hash['D'] = 500;
hash['M'] = 1000;
int res = 0;
for(int i = 0; i<s.size(); i++){
if(i+1<s.size() && hash[s[i]]<hash[s[i+1]])
res -= hash[s[i]];
else
res += hash[s[i]];
}
return res;
}
};
主要就是哈希表的熟练掌握,根据题意了解罗马数字规则