zoukankan      html  css  js  c++  java
  • LeetCode13-罗马数字转整数(水题)

    特殊规则只有六种情况,只要直接把情况都列举出来即可。

    只有I X C才会和右边组合,每次遇到这三个,直接检查右边就好了

        public int romanToInt(String s) {
    
            int result = 0;
    
            for(int i=0,len = s.length();i<len;i++){
    
                //只有I X C需要看右边而已
                if(s.charAt(i)=='I'){
                    if(i==len-1){
                        result+=1;
                    }else{
                        if(s.charAt(i+1)=='V'){
                            result+=4;
                            i++;
                        }else if(s.charAt(i+1)=='X'){
                            result+=9;
                            i++;
                        }else{
                            result+=1;
                        }
                    }
                }
    
                else if(s.charAt(i)=='X'){
                    if(i==len-1){
                        result+=10;
                    }else{
                        if(s.charAt(i+1)=='L'){
                            result+=40;
                            i++;
                        }else if(s.charAt(i+1)=='C'){
                            result+=90;
                            i++;
                        }else{
                            result+=10;
                        }
                    }
                }
    
                else if(s.charAt(i)=='C'){
                    if(i==len-1){
                        result+=100;
                    }else{
                        if(s.charAt(i+1)=='D'){
                            result+=400;
                            i++;
                        }else if(s.charAt(i+1)=='M'){
                            result+=900;
                            i++;
                        }else{
                            result+=100;
                        }
                    }
                }
    
                else{
    
                    char temp = s.charAt(i);
    
                    switch (temp){
                        case 'V':result+=5;break;
                        case 'L':result+=50;break;
                        case 'D':result+=500;break;
                        case 'M':result+=1000;break;
                    }
    
                }
    
    
    
            }
    
            return result;
    
        }

    有点慢,但是这样写法最清晰。

  • 相关阅读:
    web&http协议&django初识
    jQuery
    BOM&DOM
    装饰器
    JavaScript
    模块
    面向对象编程
    函数
    CSS
    HTML
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9322674.html
Copyright © 2011-2022 走看看