题意:给定一个字符串表示的罗马数字,把该罗马数字转化为一个整数。大小范围限制在 1 到 3999。
分析:该题与LeetCode 12 - Integer to Roman正好相反,需要将罗马数字转为整数。该题较为简单,采用discuss中的做法,计算每个符号并将其值相加,减去特殊情况的额外部分。另外吐槽一下12题和13题题意都不清楚,如果没有做过这种题大部分人都写不出来规则,但是明白规则以后又是简单的数字相加减,怪不得那么多人吐槽这种题。
class Solution {
public int romanToInt(String s) {
int sum=0;
if(s.indexOf("IV")!=-1){sum-=2;}
if(s.indexOf("IX")!=-1){sum-=2;}
if(s.indexOf("XL")!=-1){sum-=20;}
if(s.indexOf("XC")!=-1){sum-=20;}
if(s.indexOf("CD")!=-1){sum-=200;}
if(s.indexOf("CM")!=-1){sum-=200;}
char c[]=s.toCharArray();
int count=0;
for(;count<=s.length()-1;count++){
if(c[count]=='M') sum+=1000;
if(c[count]=='D') sum+=500;
if(c[count]=='C') sum+=100;
if(c[count]=='L') sum+=50;
if(c[count]=='X') sum+=10;
if(c[count]=='V') sum+=5;
if(c[count]=='I') sum+=1;
}
return sum;
}
}