leetcode【数学】-----13. Roman to Integer(罗马转整数)
1、题目描述
2、分析
输入一个字符串,这个字符串是一个罗马数字,将这个罗马数字转为阿拉伯数字。首先罗马数字的字符一共只有那么几个,每一个字符代表一个数字,这样的话就需要判断每一个字符,需要知道对于出现的每一个字符代表的数字是应该加还是减。可以根据罗马数字的规律,会发现,如果后面的字符代表的数字小于等于前面的数字的话应该是加。相反的话,则是减。这样的话,遍历每一个字符,然后计算则可得出结果。
3、代码
class Solution {
public:
int romanToInt(string s) {
int res=0;
unordered_map<char,int> roman_int{{'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000}};
for(int i=0;i<s.size();++i){
int val=roman_int[s[i]];
if(i==s.size()-1||roman_int[s[i+1]]<=roman_int[s[i]]) res+=val;
else res-=val;
}
return res;
}
};
4、相关知识点
哈希表的使用。