解题思路
注意顺序,先判断特殊情况,再判断正常情况。
C语言代码实现
int romanToInt(char* s) {
int i = 0;
int sum = 0;
int len = strlen(s);
while (i < len) {
if (s[i] == 'I' && s[i + 1] == 'V') {
sum += 4;
i += 2;
}
if (s[i] == 'I' && s[i + 1] == 'X') {
sum += 9;
i += 2;
}
if (s[i] == 'I') {
sum += 1;
i++;
}
if (s[i] == 'V') {
sum += 5;
i++;
}
if (s[i] == 'X' && s[i + 1] == 'L') {
sum += 40; i += 2;
}
if (s[i] == 'X' && s[i + 1] == 'C') {
sum += 90; i += 2;
}
if (s[i] == 'X') {
sum += 10;
i++;
}if (s[i] == 'L') {
sum += 50;
i++;
}
if (s[i] == 'C' && s[i + 1] == 'D') {
sum += 400; i += 2;
}
if (s[i] == 'C' && s[i + 1] == 'M') {
sum += 900; i += 2;
}
if (s[i] == 'C') {
sum += 100;
i++;
}if (s[i] == 'D') {
sum += 500;
i++;
}if (s[i] == 'M') {
sum += 1000;
i++;
}
}
return sum;
}