Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

 

我的思路:將int型數據轉爲字符串,將字符串逆置,逆置後進行字符串比較

class Solution {
    public int reverse(int x) {
        String str = String.valueOf(x);
        boolean isMinus = x < 0 ? true : false;
        if(isMinus){
            str = str.substring(1, str.length());
        }
        str = reverseString(str);
        if(isMinus){
            if(str.length() >= 10 && str.compareTo("2147483648") > 0){
                return 0;
            }else{
                return -Integer.parseInt(str);
            }
        }else{
            if(str.length() >= 10 && str.compareTo("2147483647") > 0){
                return 0;
            }else{
                return Integer.parseInt(str);
            }
        }
    }
    
    public String reverseString(String s){
        int len = s.length();
        char[] arr = new char[len];
        s.getChars(0, len, arr, 0);
        for(int i = 0; i<len/2; i++){
            char c = arr[i];
            arr[i] = arr[len - 1 - i];
            arr[len - 1 - i] = c; 
        }
        return String.valueOf(arr);
    }
}

官方思路:每次取尾數(通過對10求餘可得),通過累積可實現int型逆置,在累積的過程中判斷是否溢出

class Solution {
    public int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            int pop = x % 10;  //取最後一位
            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;
    }
}

 

 

 

 

 

 

 

 

 

 

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