leetcode #13 Roman to Integer

来源:互联网 发布:中国网络资讯台是什么 编辑:程序博客网 时间:2024/06/07 15:45

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!

0 0