/*
给定一个罗马数字,将其转换成整数。
输入确保在1~3999的范围内
*/
#include<stdio.h>
int romanToInt(char *s)
{
int arr[88] = {0};
arr['I'] = 1;
arr['V'] = 5;
arr['X'] = 10;
arr['L'] = 50;
arr['C'] = 100;
arr['D'] = 500;
arr['M'] = 1000;
int sum = 0;
char *p = s;
while(*p != '\0')
{
if(*p == 'I')//特殊情况1
{
if(*(p+1) != '\0' && *(p+1) == 'V' || *(p+1) == 'X')
{
p += 1;
sum += arr[*p] - arr['I'];
}
else//一般情况
{
sum += arr[*p];
}
}
else if(*p == 'X')//特殊情况2
{
if(*(p+1) != '\0' && *(p+1) == 'L' || *(p+1) == 'C')
{
p += 1;
sum += arr[*p] - arr['X'];
}
else//一般情况
{
sum += arr[*p];
}
}
else if(*p == 'C')//特殊情况3
{
if(*(p+1) != '\0' && *(p+1) == 'D' || *(p+1) == 'M')
{
p += 1;
sum += arr[*p] - arr['C'];
}
else//一般情况
{
sum += arr[*p];
}
}
else//一般情况
{
sum += arr[*p];
}
p++;
}
return sum;
}
int main()
{
int sum = romanToInt("IX");
printf("%d\n", sum);
return 0;
}
力扣刷题笔记(13)
最新推荐文章于 2024-08-29 07:41:07 发布