题目
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
分析
这个题目是上一题的变形,要求将给定的罗马序列数字转换为对应的整数。
了解罗马数字与整数的对应关系:
对应举例如下:
AC代码
class Solution{
public:
Solution()
{
}
~Solution()
{
}
int Value(char c)
{
switch (c)
{
case 'I':
return 1; break;
case 'V':
return 5; break;
case 'X':
return 10; break;
case 'L':
return 50; break;
case 'C':
return 100; break;
case 'D':
return 500; break;
case 'M':
return 1000; break;
default:
return 0; break;
}
}
int romanToInt(string s) {
int ret = 0;
if (s == "")
return ret;
ret += Value(s[0]);
for (int i = 0; s[i+1] != '\0'; i++)
{
if (Value(s[i + 1]) <= Value(s[i]))
ret += Value(s[i + 1]);
else
ret = ret + Value(s[i + 1]) - 2 * Value(s[i]);
}
return ret;
}
};