思路:
这道题直接就可以用map容器进行存储,根据题意,只要发现i+1位比i位要大,则表示此时是i和i+1位共同表示一个数字即可。
代码:
class Solution {
public:
int romanToInt(string s) {
int num = 0;
unordered_map<char,int> mp={ {'I',1} ,{'V', 5} ,{'X', 10},{'L', 50} ,{'C', 100} ,{'D', 500} ,{'M', 1000} };
for(int i=0;i<s.size();++i){
if(i==s.size()-1){ //这一步判断是否最后一位,处理完if功能块直接break,这是针对末尾一位的做法。
num+=mp[s[i]];
break;
}
if(mp[s[i]] >= mp[s[i+1]]){
num = mp[s[i]] + num;
}else{
num = mp[s[i+1]] - mp[s[i]] + num;
++i;
}
}
return num;
}
};