2119. 反转两次的数字
2119. 反转两次的数字
题目
Reversing an integer means to reverse all its digits.
- For example, reversing
2021
gives1202
. Reversing12300
gives321
as the leading zeros are not retained.
Given an integer num
, reverse num
to get reversed1
, then reversereversed1
to get reversed2
. Return true
if reversed2
equals num
. Otherwise return false
.
Example 1:
Input: num = 526
Output: true
Explanation: Reverse num to get 625, then reverse 625 to get 526, which equals num.
Example 2:
Input: num = 1800
Output: false
Explanation: Reverse num to get 81, then reverse 81 to get 18, which does not equal num.
Example 3:
Input: num = 0
Output: true
Explanation: Reverse num to get 0, then reverse 0 to get 0, which equals num.
Constraints:
0 <= num <= 10^6
题目大意
反转 一个整数意味着倒置它的所有位。
- 例如,反转
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 。
提示:
0 <= num <= 10^6
解题思路
- 如果一个数在第一次反转后以
0
结尾(例如120
变为021
),第二次反转后会导致这些零丢失(即变为21
)。 - 唯一的例外是
0
本身,反转后仍为0
。 - 因此,一个数
num
在两次反转后相同的条件是它不是以零结尾,或者它等于0
。
- 如果
num == 0
,直接返回true
。 - 如果
num % 10 == 0
,说明num
以零结尾,返回false
。 - 否则,返回
true
。
复杂度分析
- 时间复杂度:
O(1)
,判断是否等于0
和取模操作的时间复杂度均为O(1)
。 - 空间复杂度:
O(1)
,使用了常量空间。
代码
/**
* @param {number} num
* @return {boolean}
*/
var isSameAfterReversals = function (num) {
if (num == 0) return true;
return num % 10 !== 0;
};
相关题目
题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
---|---|---|---|---|---|
7 | 整数反转 | [✓] | 数学 | 🟠 | 🀄️ 🔗 |
190 | 颠倒二进制位 | [✓] | 位运算 分治 | 🟢 | 🀄️ 🔗 |