zoukankan      html  css  js  c++  java
  • 0007. Reverse Integer (E)

    Reverse Integer (E)

    题目

    Given a 32-bit signed integer, reverse digits of an integer.

    Example 1:

    Input: 123
    Output: 321
    

    Example 2:

    Input: -123
    Output: -321
    

    Example 3:

    Input: 120
    Output: 21
    

    Note:
    Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: ([-2^{31}, 2^{31}-1]). For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.


    题意

    给定一个32位有符号整数,将其各位倒置后输出,如果倒置后超出int范围溢出则输出0。

    思路

    问题的关键在于对溢出数的处理。溢出后再与最值比较不可取,因此通过与最值/10比较来判断最后会不会溢出。int范围为[-2147483648, 2147483647]。


    代码实现

    Java

    class Solution {
        public int reverse(int x) {
            int res = 0;
            while (x != 0) {
                int n = x % 10;
                if ((res > Integer.MAX_VALUE / 10)
                        || (res == Integer.MAX_VALUE / 10 && n > 7)) {
                    return 0;
                } else if ((res < Integer.MIN_VALUE / 10)
                        || (res == Integer.MIN_VALUE / 10 && n < -8)) {
                    return 0;
                } else {
                    res = 10 * res + n;
                }
                x /= 10;
            }
            return res;
        }
    }
    

    JavaScript

    /**
     * @param {number} x
     * @return {number}
     */
    var reverse = function (x) {
      let minVal = -Math.pow(2, 31), maxVal = Math.pow(2, 31) - 1
      let res = 0
      while (x !== 0) {
        let num = x % 10
        if ((res > maxVal / 10 || res === Math.trunc(maxVal / 10) && num > 7) ||
            (res < minVal / 10 || res === Math.trunc(minVal / 10) && num < -8)) {
          return 0
        }
        res = res * 10 + num
        x = Math.trunc(x / 10)
      }
      return res
    }
    
  • 相关阅读:
    (三)openwrt主Makefile解析
    (二)我的Makefile学习冲动&&编译过程概述
    openwrt修改flash大小
    (一)openwrt源码目录概述
    git_sop 脚本使用说明
    Openwrt LuCI模块练习详细步骤
    openwrt简单ipk生成及Makefile解释
    oracle中比较两表表结构差异和数据差异的方法
    C#泛型集合之Dictionary<k, v>使用技巧
    SQL语句添加,删除主键
  • 原文地址:https://www.cnblogs.com/mapoos/p/13138877.html
Copyright © 2011-2022 走看看