首页 > 学院 > 开发设计 > 正文

[LeetCode] Roman to Integer

2019-11-15 01:15:16
字体:
来源:转载
供稿:网友
[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;    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表