贴一个用了map的简洁些的版本。
int romanToInt(string s) {
unordered_map m;
m["M"] = 1000;
m["CM"] = 900;
m["D"] = 500;
m["CD"] = 400;
m["C"] = 100;
m["XC"] = 90;
m["L"] = 50;
m["XL"] = 40;
m["X"] = 10;
m["IX"] = 9;
m["V"] = 5;
m["IV"] = 4;
m["I"] = 1;
int res = 0;
for(int i = 0; i < s.length();){
int value = 0; int len = 0;
for(int j = 1; j <= 3 && j <= s.length(); j++){
if(m.find(s.substr(i,j)) != m.end()){
value = m[s.substr(i,j)];
len = j;
}
}
res += value;
i += len;
}
return res;
}