第13题 罗马数字转整数
代码:
int getValue(char s)
{
int value=0;
switch (s)
{
case 'I':value = 1; break;
case 'V':value = 5; break;
case 'X':value = 10; break;
case 'L':value = 50; break;
case 'C':value = 100; break;
case 'D':value = 500; break;
case 'M':value = 1000; break;
}
return value;
}
int romanToInt(char* s)
{
int ans = 0;
int n = strlen(s);
int i;
int temp;
for (int i = 0; i < n; ++i)
{
temp = getValue(s[i]);
//思想逻辑 IV = 4
//思想逻辑 IX = 9;
//比如说读取到了 X但是要判断数据是需要大于还是小于的
//先读取到字符是 V 和 X 5 和 10
//对应的下一个字符 如果比他们小 则减去该值
if (i < n - 1 && (getValue(s[i] )< getValue(s[i + 1])))
{
ans -= temp;
}
else
{
ans += temp;
}
}
return ans;
}
注意:
1.switch语句的用法。
2.读取字符所代表的值,将一般情况和特殊情况分别处理。
1867

被折叠的 条评论
为什么被折叠?



