3.另:这也就是有计算机才可以这么算,这对普通人来说得多麻烦啊,罗马数字很啰嗦。
public int romanToInt(String s) { char chArr[]={'I','V','X','L','C','D','M','i','v','x','l','c','d','m'}; int numArr[]={1,5,10,50,100,500,1000,1,5,10,50,100,500,1000}; HashMap<Character, Integer>map=new HashMap<Character, Integer>(); for(int i=0;i<chArr.length;i++ ) map.put(chArr[i], numArr[i]); int j=0; int strLen=s.length(); char curCh,nextCh; int sum=0; for(int i=0;i<strLen;i++) { curCh=s.charAt(i); j=i+1; if(j<strLen) { nextCh=s.charAt(j); if(map.get(curCh)<map.get(nextCh))//如果当前字符所代表的权值小于下一个字符所代表的权值 { sum+=map.get(nextCh)-map.get(curCh); i=j;//一次循环跳过两个字符 }else { sum+=map.get(curCh); } }else { sum+=map.get(curCh);//判断最后的字符 } } return sum; }