Roman to Integer
题意:给定一个罗马数字,将其转化为int。输入在1-3999内
解法:字符串从开头进行匹配,如果出现在一个位置有两种匹配,匹配更长的。例子就是IV,可以匹配I也可以匹配IV。
public class Solution139 {
public int romanToInt(String s) {
String[] strings=newString[]{"I","II","III","IV","V","VI","VII","VIII","IX","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","C","CC","CCC","CD",
"D","DC","DCC","DCCC","CM","M","MM","MMM"};
int[] number=newint[]{1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200,300,400,500,600,700,800,900,1000,2000,3000};
int ans=0;
for (int i=0;i<s.length();){
int len=0;
int index=-1;
for (int j=0;j<30;j++){
if((i+strings[j].length()-1<=s.length()-1)&&(s.substring(i, i+strings[j].length()).equals(strings[j]))){
if(strings[j].length()>len){
len=strings[j].length();
index=j;
}
}
}
ans+=number[index];
i=i+len;
}
return ans;
}
}