你的位置:首页 > Java教程

[Java教程][LeetCode] Roman to Integer


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;  }}