Excerpt |
---|
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. |
Symbol | Value |
---|---|
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
For example, two is written as II in Roman numeral, just two one's added together. Twelve is written as, XII, which is simply X + II. The number twenty seven is written as XXVII, which is XX + V + II.
...
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;
}
}; |
...