Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
public int romanToInt(String s) { // Start typing your Java solution below // DO NOT write main() function ArrayList<Character> oneLetters = new ArrayList<Character>(); oneLetters.add('I'); oneLetters.add('X'); oneLetters.add('C'); oneLetters.add('M'); ArrayList<Character> fiveLetters = new ArrayList<Character>(); fiveLetters.add('V'); fiveLetters.add('L'); fiveLetters.add('D'); int num=0; for(int i=0;i<s.length();i++){ int bit = fiveLetters.indexOf(s.charAt(i)); //if the current letter is in fiveLetters if(bit!=-1){ num+=5*(int)Math.pow(10,bit); }else{ bit = oneLetters.indexOf(s.charAt(i)); //if the current letter is in oneLetters && there is a bigger number afterwards if( i+1<s.length() && (fiveLetters.indexOf(s.charAt(i+1))>=bit || oneLetters.indexOf(s.charAt(i+1))>bit)){ num-=(int)Math.pow(10,bit); } //else, just add this num else{ num+=(int)Math.pow(10,bit); } } } return num; }