原理是采用先把罗马字符全部换成数字相加,然后对5种特殊情况进行分类讨论
class Solution {
public:
int romanToInt(string s)
{
int ans = 0;
for(char c : s)
{
if(c == 'I')
{
ans += 1;
}
else if(c == 'V')
{
ans += 5;
}
else if(c == 'X')
{
ans += 10;
}
else if(c == 'L')
{
ans += 50;
}
else if(c == 'C')
{
ans += 100;
}
else if(c == 'D')
{
ans += 500;
}
else if(c == 'M')
{
ans += 1000;
}
}
for (int i = 0; i < s.length() - 1; i++)
{
string s1 = s.substr(i, 2);
if (s1 == "IV")
ans -= 2;
else if (s1 == "IX")
ans -= 2;
else if (s1 == "XL")
ans -= 20;
else if (s1 == "XC")
ans -= 20;
else if (s1 == "CD")
ans -= 200;
else if (s1 == "CM")
ans -= 200;
}
return ans;
}
};