zoukankan      html  css  js  c++  java
  • Reverse Integer


    Reverse digits of an integer.

    Example1: x = 123, return 321
    Example2: x = -123, return -321

    此题看似简单,但有几种情况要注意:对于10这种数字的处理;对于溢出的处理。

    溢出不意味着ans_before<ans,溢出以后可能还是大于上次的数。

    解法一:采用x=reverse(reverse(x)) 的技巧判断是否溢出:

    public class Solution {//采用了reverse的reverse是数字本身的思想来防止溢出。特殊:0,10
        public int reverse(int x) {
            if(x==0)
            {
                return 0;
            }
            int temp=Math.abs(x);
            
            while(temp%10==0)
            {
                temp/=10;
            }
            if(temp!=reverse_num(reverse_num(temp)))
            {
                return 0;
            }
            if(x<0)
            {
                return -reverse_num(temp);
            }
            else return reverse_num(temp);
        }
        public int reverse_num(int x)
        {
            int ans=0;
            int temp=x;
            //boolean overflow=false;//溢出判定
            while(temp!=0)
            {
                ans=ans*10+(temp%10);
                temp/=10;
            }
            return ans;
        }
    }

    解法二:利用ans 和 Integer.MAX_VALUE/10 比较发现溢出。


    public class Solution {//采用了ans和MAX_VALUE/10进行比较发现溢出。
        public int reverse(int x) {
            int ans=0;
            int temp=x;
            while(temp!=0)
            {
                if(Math.abs(ans)>(Integer.MAX_VALUE/10))
                {
                    return 0;
                }
                ans=ans*10+(temp%10);
                temp/=10;
            }
            return ans;
        }
    
    
    }
    

    1. 负数和正数不用区别对待。

    2. -ans表示ans的负数。


  • 相关阅读:
    数据提交
    Python网页信息抓取
    Python语法学习
    Elasticsearch5.x 升级-插件
    LeetCode 33 搜索旋转排序数组
    按之字形顺序打印二叉树
    股票的最大利润
    LeetCode 1143 最长公共子序列
    对称的二叉树
    两个链表的第一个公共结点
  • 原文地址:https://www.cnblogs.com/eva_sj/p/6172254.html
Copyright © 2011-2022 走看看