Given a roman numeral, convert it to an integer.
public class Solution {
public int romanToInt(String s) {
int outPut = 0;
int mNumber = 0, dNumber = 0, cNumber = 0, lNumber = 0, xNumber = 0, vNumber = 0,
iNumber = 0;
String charTable = "MDCLXVI";
boolean addFlag=true;//flag for if add or minor
for(int i=0;i<s.length();i++){
char current = s.charAt(i);
int inDexNow = charTable.indexOf(current);//index in charTable
int inDexNext = 7;
if(i+1<s.length()){
inDexNext = charTable.indexOf(s.charAt(i+1));
}
else inDexNext = 7;//the last digit in Roman should always be added
if(inDexNow<=inDexNext)addFlag=true;
else addFlag=false;
if(current=='M'){
if(addFlag)mNumber++;
else mNumber--;
}
else if(current=='D'){
if(addFlag)dNumber++;
else dNumber--;
}
else if(current=='C'){
if(addFlag)cNumber++;
else cNumber--;
}
else if(current=='L'){
if(addFlag)lNumber++;
else lNumber--;
}
else if(current=='X'){
if(addFlag)xNumber++;
else xNumber--;
}
else if(current=='V'){
if(addFlag)vNumber++;
else vNumber--;
}
else if(current=='I'){
if(addFlag)iNumber++;
else iNumber--;
}
else {
System.out.println("Erroreous Input!");
return 0;
}
}
outPut = mNumber*1000+dNumber*500+cNumber*100+lNumber*50+xNumber*10+vNumber*5+iNumber*1;
return outPut;
}
}
Fight on!