https://leetcode-cn.com/problems/roman-to-integer/
想了个自认为有些怪的做法,不知道别人咋写的
代码
class Solution {
public:
int getVal(char c) {
if (c == 'I') return 1;
if (c == 'V') return 5;
if (c == 'X') return 10;
if (c == 'L') return 50;
if (c == 'C') return 100;
if (c == 'D') return 500;
if (c == 'M') return 1000;
return 0;
}
int romanToInt(string s) {
int ans = 0;
int flag = 1;
char pre = s[0];
char pos;
for (int i = 1; i < s.length(); i++) {
if (!flag) {
//printf ("%d %d %c %c\n", i, flag, pre, pos);
pre = s[i];
flag = 1;
continue;
}
pos = s[i];
int num1 = getVal(pre);
int num2 = getVal(pos);
if (num1 < num2) {
ans += num2 - num1;
flag = 0;
}
else if (num1 == num2) {
ans += num2 + num1;
flag = 0;
}
else {
ans += num1;
i--;
flag = 0;
}
}
if (flag) ans += getVal(pre);
return ans;
}
};