题意分析:
将罗马数字转换为阿拉伯数字(0-3999);
题目分析:
简单模拟;
解题代码:
class Solution {
public:
int romanToInt(string s) {
map<string, int> m;
m.insert(pair<string, int>("0",0));
m.insert(pair<string, int>("I",1));
m.insert(pair<string, int>("V",5));
m.insert(pair<string, int>("X",10));
m.insert(pair<string, int>("L",50));
m.insert(pair<string, int>("C",100));
m.insert(pair<string, int>("D",500));
m.insert(pair<string, int>("M",1000));
int ans=0;
int valNext;
for(int i=0;i<s.length();i++){
string t="";
t+=s[i];
int val=m.find(t)->second;
if(i+1<s.length()){
string n="";
n+=s[i+1];
valNext=m.find(n)->second;
if(val<valNext){
ans-=val;
}else{
ans+=val;
}
}else{
ans+=val;
}
}
return ans;
}
};