题目要求根据特定的罗马字符相加得出一个具体的数字
要求:
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
输入: s = "III" 输出: 3
输入: s = "IV" 输出: 4
输入: s = "IX" 输出: 9
分析:
当后面的字符数大于前面的字符数:sum=sum+后面字符-前面字符
当后面的字符数小于前面的字符数(直接求和):sum=sum+前面字符
int romanToInt(char* s) {
int sum=0;
while(*s){
int beforeNums=DateToNum(s);
int afterNums=DateToNum(++s);
if(beforeNums<afterNums){
sum=sum+afterNums-beforeNums;
++s;
}else{
sum+=beforeNums;
}
}
return sum;
}
// 罗马数字对应的数值
int DateToNum(char* s){
int flagNums=0;
switch(*s){
case 'I':
flagNums=1;
break;
case 'V':
flagNums=5;
break;
case 'X':
flagNums=10;
break;
case 'L':
flagNums=50;
break;
case 'C':
flagNums=100;
break;
case 'D':
flagNums=500;
break;
case 'M':
flagNums=1000;
break;
}
return flagNums;
}