7.整数反转

题目描述: 给出一个32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1: 输入: 123 输出: 321 示例 2:
输入: -123 输出: -321 示例 3:
输入: 120 输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

常规解法:对于负数,先转换成正数,和正数做一样的反转处理,判断结果是否溢出,再对负数加负号处理。

注意:int型整数最小值取绝对值后超出整型范围,需要用long型存储,对应的取绝对值函数也应该用labs函数。

//C语言

#include<math.h>

#define MaxIntInteger 2147483647 //也可以不使用宏定义,使用INT_MAX和INT_MIN
#define MinIntInteger -2147483648

int reverse(int x){
    long res = 0;
    long num = labs((long)x);
    while(num > 0){
        res = res * 10 + num % 10;
        num = num / 10;
    }
    if(x < 0) res = -res;
    if(res > MaxIntInteger || res < MinIntInteger) return 0;
    return res;
}
/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) { let num = x, res = 0; let maxIntInteger = 2147483647, minIntInteger = -2147483648; num = Math.abs(num); while(num != 0){ res = res * 10 + num % 10; //注意这里js的除法运算会保留小数 num = Math.floor(num / 10); } if(x < 0) res = -res; if(res > maxIntInteger || res < minIntInteger) return 0; return res; };
/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    let num = x, res = ""; //用字符串记录
    let maxIntInteger = 2147483647,
    minIntInteger = -2147483648;
    num = Math.abs(num);

    while(num != 0){
        res += num % 10;
        //注意这里js的除法运算会保留小数
        num = Math.floor(num / 10); 
    }
    res = Number(res);
    if(x < 0) res = -res;
    if(res > maxIntInteger || res < minIntInteger) return 0;
    return res;
};

  

  

posted @ 2020-05-22 17:43  Jessey45  阅读(126)  评论(0编辑  收藏  举报