leetcode-2119-反转两次的数字

leetcode-2119-反转两次的数字

难度:简单

Description

反转 一个整数意味着倒置它的所有位。

例如,反转 2021 得到 1202 。反转 12300 得到 321 ,不保留前导零 。
给你一个整数 num ,反转 num 得到 reversed1 ,接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num ,返回 true ;否则,返回 false 。

示例 1:

输入:num = 526
输出:true
解释:反转 num 得到 625 ,接着反转 625 得到 526 ,等于 num 。

示例 2:

输入:num = 1800
输出:false
解释:反转 num 得到 81 ,接着反转 81 得到 18 ,不等于 num 。

示例 3:

输入:num = 0
输出:true
解释:反转 num 得到 0 ,接着反转 0 得到 0 ,等于 num 。

Solution

模拟

数字先转为字符串,再逆转字符串,丢掉前面的0,再逆转字符串,再丢掉前面的0。

求余

原始的数字,如果第一位为0,则两次反转后不会丢失。
如果最后一位为0,那么在第一次反转后就会丢失。

故而:如果最后一位为0就return false,如果不为0就return true。

Code

模拟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* @param {number} num
* @return {boolean}
*/
var isSameAfterReversals = function(num) {
if (!num) return true;

let numStr = num + '';
let numStrReversedArray = numStr.split('').reverse();

for (let i = 0, len = numStrReversedArray.length; i < len; i++) {
if (numStrReversedArray[i] === '0') {
numStrReversedArray.shift();
} else {
break;
}

}

let numStrReversedArrayResult = numStrReversedArray.reverse();

for (let i = 0, len = numStrReversedArrayResult.length; i < len; i++) {
if (numStrReversedArrayResult[i] === '0') {
numStrReversedArrayResult.shift();
} else {
break;
}
}

let result = numStrReversedArrayResult.join('');

return numStr === result;
};

执行结果

求余

1
2
3
4
5
6
7
8
9
/**
* @param {number} num
* @return {boolean}
*/
var isSameAfterReversals = function(num) {
if (!num) return true;

return num % 10 !== 0;
};

执行结果

评论