Seawolf 发表于 2019-8-28 05:59:52

leetcode 7. 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.

First try

import java.math.BigInteger;

class Solution {
    public int reverse(int x) {
      String num = Integer.toString(x);
      
      String result = "";
      
      int len = num.length();
      
      int flag = 0;
      
      if(num.substring(0,1).equals("-")){
            
            flag = 1;
            
            num = num.substring(1,len);
            
            len = len -1;
            
      }
      
      for(int i = 0 ; i< len; i++){
            
            result = num.substring(i,i+1) + result;
      }
      
      BigInteger n = new BigInteger(result);
      
      BigInteger s = new BigInteger("-2147483648");
      BigInteger b = new BigInteger("2147483647");
      
      if(n.compareTo(s)<0|| n.compareTo(b)>0){
            
            return 0;
      }
      
      x = Integer.parseInt(result);
      
      if(flag == 1){
            
            return 0-x;
      }
      else{
            
            return x;
      }
    }
}

Second try.

class Solution {
    public int reverse(int x) {
      
      long result = 0;
      
      while(x != 0){
            
            result = result * 10 + x % 10;
            
            x = x/10;
      }
      
      if(result > 2147483647 || result < -2147483648)
            return 0;
      
      return (int)result;
      
}
}
页: [1]
查看完整版本: leetcode 7. Reverse Integer