跳至主要內容

2119. 反转两次的数字


2119. 反转两次的数字

🟢   🔖  数学  🔗 力扣open in new window LeetCodeopen in new window

题目

Reversing an integer means to reverse all its digits.

  • For example, reversing 2021 gives 1202. Reversing 12300 gives 321 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
  1. 如果 num == 0,直接返回 true
  2. 如果 num % 10 == 0,说明 num 以零结尾,返回 false
  3. 否则,返回 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整数反转[✓]数学🟠🀄️open in new window 🔗open in new window
190颠倒二进制位[✓]位运算 分治🟢🀄️open in new window 🔗open in new window