此题考查罗马数字与整数的转换。做之前要去百度百科看一下罗马数字转换成整数的规则,这道题目就好办了。罗马数字中,I代表1,V代表5,X代表10,L代表50,C代表100, D代表500, M代表1000。
一个很简单的处理办法是,将所给罗马数字从左至右依次相加,注意不要考虑进制问题。相加之后,再看是否有如下一些字母的组合:出现“IV”或“IX”,将所得结果减2;出现“XL”或“XC”,将所得结果减20;出现“CD”或“CM”,将所得结果减200.
C++实现代码:
class Solution {
public:
int romanToInt(string s) {
int sum = 0;
if(s.find("IV")!=-1||s.find("IX")!=-1)
sum -= 2;
if(s.find("XL")!=-1||s.find("XC")!=-1)
sum -= 20;
if(s.find("CD")!=-1||s.find("CM")!=-1)
sum -= 200;
for(int i=0;i<s.length();i++){
if(s[i]=='I')
sum = sum+1;
if(s[i]=='V')
sum = sum+5;
if(s[i]=='X')
sum = sum+10;
if(s[i]=='L')
sum = sum+50;
if(s[i]=='C')
sum = sum+100;
if(s[i]=='D')
sum = sum+500;
if(s[i]=='M')
sum = sum+1000;
}
return sum;
}
};