这道题我做了挺久了。先是去学了重载运算符(其实学过,不过早忘了。而且最后也没用上hhhh),之后不知道怎么截取string,又上网查了下,发现截取string方式特别简单。
s.substr(i, l)
就可以了,i是开始截取的索引,l是截取长度。
class Solution {
public:
int romanToInt(string s) {
map<string, int> mp; //建表
mp["I"] = 1;
mp["IV"] = 4;
mp["V"] = 5;
mp["IX"] = 9;
mp["X"] = 10;
mp["XL"] = 40;
mp["L"] = 50;
mp["XC"] = 90;
mp["C"] = 100;
mp["CD"] = 400;
mp["D"] = 500;
mp["CM"] = 900;
mp["M"] = 1000;
int l = s.length();
int result = 0;
for (int i = 0; i < l; i++) {
if (i + 1 < l && mp.count(s.substr(i, 2))) {
string now = s.substr(i, 2);
result += mp[now];
i++;
continue;
}
result += mp[s.substr(i, 1)];
}
return result;
}
};