zoukankan      html  css  js  c++  java
  • Reverse Integer

    问题描述

    Reverse digits of an integer.

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

    算法

    代码一:

     1 public int reverse(int x) {
     2         long rev= 0;
     3         while( x != 0){
     4             rev= rev*10 + x % 10;
     5             System.out.println(rev);
     6             x= x/10;
     7             if( rev > Integer.MAX_VALUE || rev < Integer.MIN_VALUE)
     8                 return 0;
     9         }
    10         return (int) rev;
    11     }

    代码二:

    1 public int reverse(int x) {
    2     int result = 0;
    3     while (x != 0) {
    4         if (result * 10 / 10 != result) return 0;   // result*10/10 will not equals result if overflow, if not overflow, result*10 + x%10 is safe, then continue
    5         result = result * 10 + x % 10;
    6         x /= 10;
    7     }
    8     return result;
    9 }

    注意事项:

    1.对于int型,一定要注意可能存在越界现象,比如当x=1234567899时,revers后就越界了。代码一的解决方法是用Long型变量。代码二的方法比较独特,但是代码二不是正确的,假如result*10=2147483646,并且x%10=4,虽然result*10/10=result,但是result*10+x%10 越界。代码二可以借鉴的思想是,如果result*10是越界的,那么result*10/10!=result。

    2.对于一个负数x=-212,x%10=-2,而不是8.

  • 相关阅读:
    设计模式
    刷新所有视图存储过程
    js杨辉三角控制台输出
    2018申请淘宝客AppKey
    w3c标准 dom对象 事件冒泡和事件捕获
    promise原理
    vue virtual Dom
    css学习
    seo优化
    新概念学习
  • 原文地址:https://www.cnblogs.com/qiaoshanzi/p/4923000.html
Copyright © 2011-2022 走看看