题目
举例
思路
- unordered_map存储罗马字符与数值的对应关系
- 从左到右遍历罗马字符串,在直接加到数字上之前先查看一下是否比右边的数值小,小的话就是减去
代码
class Solution {
public:
int romanToInt(string s) {
int res = 0;
unordered_map<char,int> m{{'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000}};
for (int i = 0; i<s.size(); ++i)
{
int val = m[s[i]];
if(i==s.size()-1 || m[s[i+1]] <= m[s[i]]) res += val;
else res-=val;
}
return res;
}
};