2119. 反转两次的数字
2119. 反转两次的数字
题目
Reversing an integer means to reverse all its digits.
- For example, reversing
2021gives1202. Reversing12300gives321as 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 | 颠倒二进制位 | [✓] | 位运算 分治 | 🟢 | 🀄️ 🔗 |
