class Solution {
public:
int romanToInt(string s) {
int n = s.size();
int ans = 0;
for (int i = 0; i < n; i++) {
if (s[i] == 'I') {
ans += 1;
} else if (s[i] == 'V') {
if (i - 1 >= 0 && s[i - 1] == 'I') {
ans += -1 + 5 - 1;
} else {
ans += 5;
}
} else if (s[i] == 'X') {
if (i - 1 >= 0 && s[i - 1] == 'I') {
ans += -1 + 10 - 1;
} else {
ans += 10;
}
} else if (s[i] == 'L') {
if (i - 1 >= 0 && s[i - 1] == 'X') {
ans += -10 + 50 - 10;
} else {
ans += 50;
}
} else if (s[i] == 'C') {
if (i - 1 >= 0 && s[i - 1] == 'X') {
ans += -10 + 100 - 10;
} else {
ans += 100;
}
} else if (s[i] == 'D') {
if (i - 1 >= 0 && s[i - 1] == 'C') {
ans += -100 + 500 - 100;
} else {
ans += 500;
}
} else if (s[i] == 'M') {
if (i - 1 >= 0 && s[i - 1] == 'C') {
ans += -100 + 1000 - 100;
} else {
ans += 1000;
}
}
}
return ans;
}
};
Time Complexity: O(n)
Space: O(1)
爛題