Skip to content

Latest commit

 

History

History
76 lines (57 loc) · 1.73 KB

7.整数反转.md

File metadata and controls

76 lines (57 loc) · 1.73 KB

7.整数反转

url

题目

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

输入: 123
输出: 321

输入: -123
输出: -321

输入: 120
输出: 21

方法

y = y * 10 + x % 10 x /= 10

二者使用效果极佳

  • 这个题很多方法的,就用数学公式解答吧
  • 你可以举个例子,假如123,怎么才能成为321呢?字符串的话,反转即可,关键这不是字符串了,当然你想说,先转成字符串,然后字符串反转,然后变为int,岂不是很方便?嘿嘿,的确很方便。
  • 利用y = y * 10 + x % 10,123 % 10 = 3,是不是将3提炼出来了?那么利用x /= 10,是不是x=12了? y = 3, 假如为再来一次这样的操作呢?12 % 10 = 2, x = 1, y = 30 + 2,不用继续往下说了吧?

code

js

let reverse = function(x) {
    let ret = 0;
    while (x !== 0) {
        ret = ret * 10 + x % 10;
        x = (x / 10) | 0; // x / 10 去除末位,| 0 强制转换为32位有符号整数。
        // 通过 | 0 取整,无论正负,只移除小数点部分(正数向下取整,负数向上取整)。
    }
    return (ret | 0) === ret ? ret : 0; // ret | 0 超过32位的整数转换结果不等于自身,可用作溢出判断。
};
console.log(reverse(123));

go

func reverse(x int) int {
	ret := 0
	for x != 0 {
		ret = ret * 10 + x % 10
		x /= 10
	}
	return ret
}

java

class Solution {
    public int reverse(int x) {
        long ret = 0;
        while (x != 0) {
            ret = ret * 10 + x % 10;
            x /= 10;
        }
        return (int) ret == ret ? (int) ret : 0;
    }
}