题目:
示例:
输入: "III"
输出: 3
输入: "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
输入: "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
代码如下:
class Solution {
public:
int romanToInt(string s) {
map<string, int> num = { {"I",1},{"IV",4},{"V",5},{"IX",9},{"X",10},{"XL",40},
{"L",50},{"XC",90},{"C",100},{"CD",400},{"D",500},{"CM",900},{"M",1000} };
int res = 0;
int i = 0;
map<string, int>::iterator iter;
while (i < s.size() - 1)
{
string sec = s.substr(i, 2);
string fir = s.substr(i, 1);
iter = num.find(sec);
if (iter != num.end())
{
res += num[sec];
i += 2;
}
else
{
res += num[fir];
i += 1;
}
}
if (i == s.size()) return res;
else return res + num[s.substr(s.size() - 1, 1)];
}
};