13.Roman to Integer (Map)
4022 ワード
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
Input is guaranteed to be within the range from 1 to 3999.
class Solution {
public:
int romanToInt(string s) {
int values[] = {1000, 500, 100, 50, 10, 5, 1 };
char numerals[] = {'M', 'D', 'C', 'L', 'X', 'V', 'I' };
int i = 0, j = 0, result = 0;
while(i < s.length()){
if(s[i] != numerals[j]){
j++;
continue;
}
if(i+1<s.length() && j-1>=0 && s[i+1] == numerals[j-1]){
result += values[j-1]-values[j];
i+=2;
}
else if(i+1<s.length() && j-2>=0 && s[i+1] == numerals[j-2]){
result += values[j-2]-values[j];
i+=2;
}
else{
result += values[j];
i++;
}
}
return result;
}
};