LeetCode #13 罗马数字转整数
题目描述
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
解法
class Solution {
public:
int romanToInt(string s) {
map<char,int> val;
map<string,int> num;
val['I']=1;val['V']=5;val['X']=10;
val['L']=50;val['C']=100;val['D']=500;
val['M']=1000;
num["IV"]=4;num["IX"]=9;
num["XL"]=40;num["XC"]=90;
num["CD"]=400;num["CM"]=900;
int len=s.length();
int sum=0;
for(int i=0;i<len;){
char c=s[i];
if(val[c]<val[s[i+1]]){
string str;
str.push_back(c);
str.push_back(s[i+1]);
sum+=num[str];
i+=2;
}
else{
sum+=val[c];
i++;
}
}
return sum;
}
};