13. 罗马数字转整数
思路:模拟,每次判断当前位置i的字符时,和后面一个字符的优先级进行比较,这里直接用他对应的值作为优先级比较即可。
class Solution {
public:
int romanToInt(string s) {
unordered_map<string, int> mp;
mp={{"M",1000},{"D",500},{"C",100},{"L",50},{"X",10},{"V",5},{"I",1}};
int lens=s.size();
string t="";
int sum=0;
for(int i=0;i<lens;i++){
if(i==lens-1||mp[t+s[i]]>=mp[t+s[i+1]])
sum+=mp[t+s[i]];
else{
sum-=mp[t+s[i]];
}
}
return sum;
}
};