zoukankan      html  css  js  c++  java
  • LeetCode第七题--Reverse Integer

    Reverse Integer

    简介:给定一个32位有符号整数,求整数的反向数字

    问题详解:给定一个int 数字,求数字的反转数字

    (int4个字节,即-2^31 ~ 2^31-1,即-2,147,483,648~2,147,483,647)

    举例:

    1.

    输入:1234

    输出:4321

    2.

    输入:-1234

    输出:-4321

    3.

    输入:120

    输出:21

    注意:反转数字后的大小是否在int范围之内

    Java解法一:我分成两种情况讨论,正负数,利用StringBuilder().reverse().toString()进行反转,再分别与Integer.MIN_VALUE/Integer.MAX_VALUE比较,符合返回结果值,不符合返回0

    官方实现一:Pop and Push Digits & Check before Overflow

    我们可以一次构建一个反向整数.在这样做的同时,我们可以事先检查是否附加另一个数字会导致溢出

    算法:

    可以与反转字符串类似地完成反转整数

    要在不借助某些辅助堆栈/数组的情况下“弹出”和“推”数字,我们可以使用数学

    //弹出操作:

    pop = x%10;

    x / = 10;

    //推送操作:

    temp = rev * 10 + pop;

    rev = temp;

    复杂度分析:

    时间复杂度: O(log(x))

    空间复杂度: O(1).

    注:

    1.数学运算

    舍掉小数取整:Math.floor(3.5)=3

    四舍五入取整:Math.round(3.5)=4

    进位取整:Math.ceil(3.1)=4

    取绝对值:Math.abs(-3.5)=3.5

    取余数:A%B = 余数

    2.Long - int 转换

    *将long型转化为int型,这里的long型是基础类型:

    long a = 10; int b = (int)a;

    *将Long型转换为int 型的,这里的Long型是包装类型:

    Long a = 10; int b=a.intValue();

    *将int型转化为long型,这里的int型是基础类型:

    int a = 10;long b = (int)a;

    *将Integer型转化为long型,这里的Integer型是包装类型:

    int a = 10;Long b = a.longValue();

    3.java中基本数据类型:

    byte 1字节

    short 2字节

    int 4字节

    long 8字节

    float 4字节

    double 8字节

    char 2字节

    boolean 1字节

    4.字符串反转

    new StringBuilder(string).reverse().toString()

    小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海

  • 相关阅读:
    Ubuntu VIM下实现python自动缩进
    认识Python和基础知识
    Linux常用服务器搭建
    VIM常用命令
    Linux基础
    LINUX操作系统VIM的安装和配置
    Ubuntu 16.04下安装搜狗输入法
    Ubuntu 16.04下sublime text3安装
    Ubuntu软件安装与卸载
    present(模态)实现出push的效果
  • 原文地址:https://www.cnblogs.com/lalalaczq/p/10695345.html
Copyright © 2011-2022 走看看