Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
這道題主要要搞清楚Roman變成Integer的算法。
記得如果一個數比前面一個數小,那么就作為加數,反之則是前面那個數作為減數。(eg:IV=4,XLV=45,XX=20)
因此我們可以從隊尾開始,慢慢判斷一個數是該+還是該去-。
代碼如下。~
public class Solution { public int romanToInt(String s) { if(s==null||s.length()==0){ return 0; } HashMap<Character,Integer> hash=new HashMap<Character,Integer>(); hash.put('I',1); hash.put('V',5); hash.put('X',10); hash.put('L',50); hash.put('C',100); hash.put('D',500); hash.put('M',1000); int len=s.length(); int result=hash.get(s.charAt(len-1)); int compare=result; for(int i=len-2;i>=0;i--){ int curr=hash.get(s.charAt(i)); if(curr>=compare){ result=result+curr; }else{ result=result-curr; } compare=curr; } return result; }}
新聞熱點
疑難解答