【题】 Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
【题目分析】首先,罗马数字的表示必须要清楚,这一点上网查。
【具体代码如下】
int toNumber(char ch) {
switch (ch) {
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50;
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
}
}
int romanToInt(char* s) {int total=0;
char *p=s;
int i=0;
int a=0;
int b=0;
while(p[i]!='\0')
{
a=toNumber(p[i]);
b=toNumber(p[i+1]);
if(a>=b)
{
total=a+total;
i=i+1;
}
if(a<b)
{
total=total+b-a;
i=i+2;
}
}
return total;
}
【自我总结】
1.首先我遇到的问题是如何将’X’,I,L,C,D…..罗马数字与他们所表示的具体值联系起来。采用的方法是实现一个独立的函数完成此功能。一一对应采用switch语句,都不满足时return 0;这个比较容易被忽略。函数返回值就是传入参数的数值。这样做在方便实现romanToInt函数的编写。