[罗马数字转十进制数] 接收罗马数字字符串,返回一个 int 型十进制数 #字符串处理
int RomanNumberToDecimal(char* roman) {
int index[26] = {
0,0,100,500,0,0,0, //C-100 D-500
0,1,0,0,50,1000,0, //I-1 L-50 M-1000
0,0,0,0,0,0,
0,5,0,10,0,0}; //V-5 X-10
int n = 0, i = 0;
while(i < strlen(roman) - 1) {
int p = index[roman[i] - 'A'];
int q = index[roman[i+1] - 'A'];
if(p >= q) {
n += p;
i += 1;
}else { //两位字母组成一个数的情况
n += q - p;
i += 2;
}
}
//while 结束时 i = strlen(roman)-1 或 strlen(roman)
//i = strlen(roman)-1 时,最后一位字母没有计算
if(i == strlen(roman) - 1) {
n += index[roman[i] - 'A'];
}
return n;
}