码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode练习题 7. Reverse Integer

时间:2019-12-14 23:20:04      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:his   sina   git   while   sum   难点   this   防止   习题   

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.

问题解法 一:

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

在本题中,难点主要是有限整数的翻转和防止值溢出。

  • 对于有限整数的翻转,本题采用的方法是用循环,取余,再除以10的方法
  • 而对于栈溢出

根据如下公式:
技术图片

采用:

if (reversed>Integer.MAX_VALUE || (reversed==Integer.MAX_VALUE && pop>7)

if(reversed<Integer.MIN_VALUE || (reversed==Integer.MIN_VALUE && pop<-8))

问题解法 二:

当然还有一种解法就是使用long型号数组,再转化成(int), 这里省去了复杂的公式判断;因为在int型中,如果不按照公式进行判断的话,就会溢出,缺点是由于测试数据并未超过long型号的长度,所以也能通过。

 public int reverse(int x) {
        long res = 0;
        while (x != 0) {
            res = res * 10 + x % 10;
            x = x / 10;
        }
        
        if (res < Integer.MIN_VALUE || res > Integer.MAX_VALUE) {
            return 0;
        } else {
            return (int)res;
        }
    }

Leetcode练习题 7. Reverse Integer

标签:his   sina   git   while   sum   难点   this   防止   习题   

原文地址:https://www.cnblogs.com/zhichun/p/12041119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!