...
Input: "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
Accepted
318,074
Submissions
631,759
...
Solution 1 in C++
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; } }; |
...