解法:定义返回值res=0,依次遍历字符串,
比如IV,先遍历I,因为I后面的V比I大,则res=res+5-1=4;
又比如VIII,(1)先遍历V,因为V后面I比V小,则res=res+5=5;
(2)再遍历I,因为后面I和I相等,则res=res+1=6;
(3)同理,最终可得res=8;
class Solution1 {
public:
int romanToInt(string s) {
map<char, int> roman{
{'I',1},
{'V',5},
{'X',10},
{'L',50},
{'C',100},
{'D',500},
{'M',1000}
};
int result=0;
for(auto s_cur = s.begin(); s_cur != s.end(); s_cur++) {
if (s_cur+1 < s.end() && roman[*s_cur] < roman[*(s_cur + 1)]) {
result = result + roman[*(s_cur + 1)] - roman[*s_cur];
s_cur++;
}
else
result = result + roman[*s_cur];
}
return result;
}
};