• 【LeetCode7】Reverse Integer★


    题目描述:

    解题思路:

      反转的方法很简单,重点在于判断溢出的问题,下面给出了两种方法。

    Java代码:

    方法一:

      判断溢出方法:在执行完int newResult=result*10+tail语句后,紧接着进行逆运算result=(newResult-tail)/10,如果出现溢出,那么逆运算后result和newResult必然不相等,反之,如果没有溢出,则逆运算后result=newResult。

     1 public class LeetCode7 {
     2     public static void main(String[] args) {
     3         int x1=123;
     4         System.out.println(x1+"的反转结果是:"+new Solution().reverse(x1));
     5         int x2=1534236469;
     6         System.out.println(x2+"的反转结果是:"+new Solution().reverse(x2));
     7     }
     8 }
     9 class Solution {
    10     public int reverse(int x) {
    11         int result=0;
    12         while(x!=0){
    13             int tail=x%10;
    14             int newResult=result*10+tail;
    15             //判断溢出
    16             if((newResult-tail)/10!=result)
    17                 return 0;
    18             result=newResult;
    19             x=x/10;
    20         }
    21         return result;
    22     }
    23 }

    程序结果:

    方法二:

      判断溢出方法:采用long类型存储翻转后的数,再与 Integer.MAX_VALUE 和 Integer.MIN_VALUE 比较,判断是否溢出。

     1 public class LeetCode7 {
     2     public static void main(String[] args) {
     3         int x1=123;
     4         System.out.println(x1+"的反转结果是:"+new Solution().reverse(x1));
     5         int x2=1534236469;
     6         System.out.println(x2+"的反转结果是:"+new Solution().reverse(x2));
     7     }
     8 }
     9 class Solution {
    10     public int reverse(int x) {
    11         long result=0;
    12         while(x!=0){
    13             int tail=x%10;
    14             long newResult=result*10+tail;
    15             result=newResult;
    16             x=x/10;
    17         }
    18          //根据是否溢出返回结果
    19         return (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE)?0:(int)result;
    20     }
    21 }

    程序结果:

    结论:

      本人比较倾向第一种方法,因为第一种方法不需要借助语言本身的常量值。

  • 相关阅读:
    再谈Asp.Net页面生命周期
    多线程、方便扩展的Windows服务程序框架
    用NuGet.Server管好自家的包包
    github for Windows
    MongoVUE 15天试用期解决办法
    NET插件系统——提升系统搜索插件和启动速度的思考
    Visual Studio Ultimate 2012 RC 安装手记
    自动完成菜单
    HBase
    WCF消息可靠性于有序传递
  • 原文地址:https://www.cnblogs.com/zhangboy/p/6445345.html
Copyright © 2020-2023  润新知