...
Code Block |
---|
class Solution {
public:
int romanToInt(string s) {
vector<string> NumStr[4]={
{ "I","II","III", "IV", "V", "VI", "VII", "VIII", "IX"},
{ "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
{ "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},
{ "M", "MM", "MMM", }
};
int ret=0;
int d_pos=3;
int s_pos=0;
int s_len=s.length();
while(( s_pos<s_len) && (d_pos>=0)) {
for(int i=NumStr[d_pos].size()-1;i>=0;i--) {
int d_length = NumStr[d_pos][i].length();
if (NumStr[d_pos][i]==s.substr(s_pos,d_length)) {
ret += (pow(10,d_pos)*(i+1));
s_pos += d_length;
break;
}
}
d_pos--;
}
return ret;
}
}; |
...