13.罗马数字转整数
题目
示例:
解题思路
- 利用哈希表:
class Solution {
public:
int romanToInt(string s) {
int ans=0;
unordered_map<char, int> m = {//预存一个哈希表
{'I', 1},
{'V', 5},
{'X', 10},
{'L', 50},
{'C', 100},
{'D', 500},
{'M', 1000}
};
int length=s.size();
for(int i=0;i<length;i++)
{
if(i<length-1&&m[s[i]]<m[s[i+1]])ans-=m[s[i]];//如果出现后面的数字比前面的大的情况,前面的作减法
else ans+=m[s[i]];//否则直接加就好
}
return ans;
}
};