刷題次日,幹會活而後刷一會題,不過刷的太慢了,腦殼很差使啊-----13.Roman to Integer

只寫了一個java版本的,思想知道了,語言知識工具,學學語法就好了,因此我就沒有寫C#與javascriptjavascript

我本身寫的,寫的比較粗糙java

class Solution {
    public int romanToInt(String s) {
Map<Character,Integer> map = new HashMap<Character,Integer>();
        map.put('I',1);
        map.put('V',5);
        map.put('X',10);
        map.put('L',50);
        map.put('C',100);
        map.put('D',500);
        map.put('M',1000);
    
        int result = 0;
        
        if(s.length() % 2 != 0){
            result += map.get(s.charAt(s.length() - 1));
        }
        
        for (int i = 0; i < s.length(); i=i+2) {
            
            if(i + 2 > s.length()) return result;
             
            if(map.get(s.charAt(i)) >= map.get(s.charAt(i + 1))){
                
                result += map.get(s.charAt(i)) + map.get(s.charAt(i + 1));
                
            }else{
                
                result += map.get(s.charAt(i + 1)) - map.get(s.charAt(i));
            }
            
        }
         
        return result;
    }
}工具

總結:提交代碼時,個人方法提交不了,最終結果跟答案不符,s = "MCMXCVI"時,我走IDE最終結果是正確的,可是在LeetCode提交顯示結果是1996,不知道爲何,我都走debug了,也沒看出什麼,無耐。debug

貼一張我本身寫的代碼,在LeetCode運行結果指針

-------------------------------------分割線------------------------------------------------------ip

是時候展現真正的技術了EZ~~~~~~~~~~~·get

    這是網上查的,從後面向前進行計算,先把最後一個值加上,而後賦值給一箇中間變量tag,指針向前移動一位,tag指向i-1,這樣進行比較,默認tag等於0,第一次比較tag就等於最後一位的值。主要就是tag,就靠tag支撐着邏輯。io

    我作這道題是一次i加兩位,根據s.length()的奇偶數是否單獨加上最後一爲,下面的方法是直接使用tag,一位位比較而後進行相加,就不用考慮奇偶數了,用不用單獨加最後一位了,把最後一位給tag,默認把最後一位添加到結果中去,而後tag跟倒數第二位比較,進行加減,而後tag=倒數第二位數,以此類推。class

Map<Character,Integer> map = new HashMap<Character,Integer>();
        map.put('I',1);
        map.put('V',5);
        map.put('X',10);
        map.put('L',50);
        map.put('C',100);
        map.put('D',500);
        map.put('M',1000);
    
        int tag = 0;
        int res = 0;
            
        for (int i = s.length() - 1; i >= 0; i--){
           
           if(map.get(s.charAt(i)) >= tag){
               
               res += map.get(s.charAt(i));
               
           }else{
               
               res -= map.get(s.charAt(i));
               
           }
           
           tag = map.get(s.charAt(i));
       }
        
        return res;
        
    }變量

相關文章
相關標籤/搜索