int romanToInt(char* s) {
int sum = 0;
while(*s){
if(*s == 'V') sum += 5; //正常情况
else if(*s == 'L') sum += 50;
else if(*s == 'D') sum += 500;
else if(*s == 'M') sum += 1000;
else if(*s == 'I') { //I X C要分类讨论,比下一个小则减
if(*(s + 1) == 'V' || *(s + 1) == 'X') //比下一个大就正常加即可,因此要加1比较右边
sum -=1;
else
sum += 1;
}
else if(*s == 'X'){
if(*(s + 1) == 'L' || *(s + 1) == 'C')
sum -=10;
else
sum += 10;
}
else if(*s == 'C'){
if(*(s + 1) == 'D' || *(s + 1) == 'M')
sum -= 100;
else
sum += 100;
}
s++; //不断比较右边符号
}
return sum;
}
Leetcode 13 罗马数字转整数
最新推荐文章于 2024-10-17 14:59:31 发布