Leetcode7整數反轉

沒有考慮到的問題:Integer的最大值(2147483647)問題,以爲直接用棧即可。事實上並不是這樣,如果一個數本來是int,但是反轉後會超出最大值範圍

class Solution {
    public int reverse(int x) {
        String data = x +"";
        boolean flag = false;
        Stack<Character> stack = new Stack();
        for(int i = 0; i < data.length(); i++){
            if(data.charAt(i) == '-'){
                flag = true;
            }else{
              stack.push(data.charAt(i));

            }
        } 
        data = "";
        while(!stack.isEmpty()){
            data = data + stack.pop();
        }
        if()
        int d = Integer.valueOf(data);
        if(flag)
            return -d;
        else
            return d;
    }
}

只好按照古老的法子做了

class Solution {
    public int reverse(int x) {
        int rev = 0;
  
           while(x!=0){
               int pop = x % 10;
               x = x/10;
               if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7))                      return 0;
            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8))                      return 0;
            rev = rev * 10 + pop;
           }
        return rev;
    }
        
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章