zoukankan      html  css  js  c++  java
  • LeetCode题解 #7 Reverse Integer

    上一次做完一个中等题觉得还挺简单,做一下简单题看看。

    题目大意:给定一个整型(即int),将它的数位反过来,如321变为123,-321变为-123.

    做了很久,因为简单题耗时的地方在于恶心!!

    最后才看见溢出的时候应该返回0!!

    一点都不难,特别是对于java。

    我的思路:

    1、将读入的int型包装成Integer,然后在转换成String。(看看前面有没有+-号)

    2、将String 倒置,再转换为long。(一定要是long,否则无法判断溢出)

    3、如果没溢出,再将long转换为int。

    以上都用了java自带的类,是很简单,但是效率低下。大概是在中上的水平。(无法理解比这个方法更低效率的代码是怎么写的-_-|||)

    以下是我改进一下的正确做法:

    class Solution {

    public: int reverse(int x) {

    // 先分离出x的数值部分和符号部分

    int y = abs(x), z = x == y ? 1 : -1;

    // 将y反向放于一个long中,这样可以避免越界

    long tmp = 0; while (y) { tmp = tmp * 10 + y % 10; y /= 10; }

    // 判断是否越界

    if (z*tmp > INT_MAX || z*tmp < INT_MIN) return 0;

    // 否则返回翻转后的值

    return z*tmp;

    }

    };

    总结一下:

     1、碰到要判断int是否溢出的地方,肯定要用到long的,用long比较是否溢出。

     2、要从另一个数字一个个的构造另一个数字,long tmp = 0; while (y) { tmp = tmp * 10 + y % 10; y /= 10; }这行代码算是模板了。记住就好

  • 相关阅读:
    [ios][swift]提示框,并自动消失
    [ios][switf]页面跳转
    [ios][swift]UIButton
    [ios][swift]文本框UITextField用法
    html分割线
    html里 调整字间距
    php数字补零的两种方法
    PHP格式化数字和SMARTY格式化数字的方法
    CSS控制文字,超出部分显示省略号
    指定DIV局部刷新的简单实现,很简单,但是网上搜到的大部分都很复杂
  • 原文地址:https://www.cnblogs.com/wzben/p/5008569.html
Copyright © 2011-2022 走看看