版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zwkkkk1/article/details/80430533
原题网址:https://leetcode.com/problems/reverse-integer/
难度:Easy
题目
给定一个 32 位有符号整数,将整数中的数字进行反转。
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21
Note:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]
。根据这个假设,如果反转后的整数溢出,则返回 0。
思路
对 input 进行循环处理,便于理解此处取 Example1 进行解析:
1. 循环1(x = 123),x % 10 = 3,得到余数3,x = (123 - 3) / 10 = 12,反转结果 num = num * 10 + 余数3 = 3;
2. 循环2(x = 12),x % 10 = 2,得到余数2,x = (12 - 2) / 10 = 1,反转结果 num = num * 10 + 余数2 = 32;
3. 循环3(x = 1),x % 10 = 1,得到余数1,x = (1 - 1) / 10 = 0,反转结果 num = num * 10 + 余数1 = 321;
4. x = 0 退出循环,对反转结果进行区间判定,需符合 [−231, 231 − 1],通过返回结果 num,不通过返回 0。
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
var num = 0, digit = 0;
while(x != 0) {
digit = x % 10;
x = (x - digit) / 10;
num = num * 10 + digit;
}
if (num >= 2147483647 || num <= -2147483647) {
return 0;
}
return num;
};
Your runtime beats 96.47 % of javascript submissions
运行时间:76ms,clear!