题目:
解题思路:
倒序遍历,若当前字符代表的数字比上一字符代表的数字小,即减去当前字符数字。
时间复杂度:
空间复杂度:
int romanToInt(char* s) {
int ans = 0;
int low = 0;
int num[26];
num['I' - 'A'] = 1;
num['V' - 'A'] = 5;
num['X' - 'A'] = 10;
num['L' - 'A'] = 50;
num['C' - 'A'] = 100;
num['D' - 'A'] = 500;
num['M' - 'A'] = 1000;
for (int i = strlen(s)-1; i >= 0; i--) {
if (low > num[s[i] - 'A']) {
ans -= num[s[i] - 'A'];
}
else ans += num[s[i] - 'A'];
low = num[s[i] - 'A'];
}
return ans;
}