爱程序网

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

 

关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助