罗马数字转整数,写了一堆if else之后打算改成switch,等等,我刷leetcode不是想学c++吗,那用c++应该会简单不少。
解法如下:
class Solution {
public:
int romanToInt(string s)
{
map<char, int> T = { { 'I' , 1 },
{ 'V' , 5 },
{ 'X' , 10 },
{ 'L' , 50 },
{ 'C' , 100 },
{ 'D' , 500 },
{ 'M' , 1000 } };
int sum = T[s.back()];
for (int i = s.length() - 1; i >= 1; --i)
{
if (T[s[i]] > T[s[i - 1]])
{
sum -= T[s[i-1]];
}
else
{
sum += T[s[i-1]];
}
}
return sum;
}
};
从后开始遍历,如果后一个比前一个小,那么再加了后面对应的值的基础上减去前一个字符对应的值。