首页 > 其他 > 详细

leetcode 13 罗马数字转整数

时间:2020-04-01 21:14:59      阅读:51      评论:0      收藏:0      [点我收藏+]

原题点这里

 

这个从后面遍历罗马数字,然后比较当前字符的整数是否大于它的前一个,如果是,则当前整数取负值,否则取正值。

方法一:利用map实现 10ms

技术分享图片
public static  int romanToInt(String s) {
        HashMap<Character,Integer> r2i = new HashMap();
        r2i.put(‘I‘,1);
        r2i.put(‘V‘,5);
        r2i.put(‘X‘,10);
        r2i.put(‘L‘,50);
        r2i.put(‘C‘,100);
        r2i.put(‘D‘,500);
        r2i.put(‘M‘,1000);
        int n=r2i.get(s.charAt(s.length()-1));
        for(int i=s.length()-2;i>=0;i--){
            if(r2i.get(s.charAt(i))>=r2i.get(s.charAt(i+1))){
                n+=r2i.get(s.charAt(i));
            }else{
                n-=r2i.get(s.charAt(i));
            }
        }
        return n;



    }
View Code

 

方法二:使用switch  4ms

技术分享图片
public static  int romanToInt2(String s) {
        int cur=0;
        int pre = 0;
        int ans = 0;
        int n = s.length();
        for(int i=n-1;i>=0;i--){
            char c = s.charAt(i);
            switch (c){
                case ‘I‘:
                    cur = 1;
                    break;
                case ‘V‘:
                    cur = 5;
                    break;
                case ‘X‘:
                    cur = 10;
                    break;
                case ‘L‘:
                    cur = 50;
                    break;
                case ‘C‘:
                    cur = 100;
                    break;
                case ‘D‘:
                    cur = 500;
                    break;
                case ‘M‘:
                    cur = 1000;
                    break;
            }
            if(i==(n-1)){
                pre = cur;
                ans += cur;
            }else{
                if(cur<pre){
                    ans-=cur;
                }else{
                    ans+=cur;
                }
                pre=cur;
            }
        }
        return ans;



    }
View Code

 

leetcode 13 罗马数字转整数

原文:https://www.cnblogs.com/superxuezhazha/p/12615364.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!