题目:罗马数字转整数
分析:说实话做这道题才知道罗马数是怎么看的。。。之前就记得1234这样背。。嗯原理如下:从前往后读,如果后一位比前一位还大,那么它们合起来的值为后一位减去前一位。
答案:
class Solution {
public:
int romanToInt(string s) {
int result = 0;
for (int i = 0; i < s.length(); i++)
{
if (i > 0 && romanToIntSingle(s[i]) > romanToIntSingle(s[i - 1]))
{
result = result + romanToIntSingle(s[i]) - 2 * romanToIntSingle(s[i - 1]);
}
else
result += romanToIntSingle(s[i]);
}
return result;
}
private:
int romanToIntSingle(char c)
{
switch ( c)
{
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;
default:
return 0;
}
}
};