题目
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1: 输入: 121 输出: true
示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 - 121 。 从右向左读, 为 121 - 。因此它不是一个回文数。
示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number
|
思路
1、排除明显不符合条件的数字,当 x 为 负数时不满足回文条件, 当 x 的最后一位为 0 时,要满足回文条件,必须最前面一位也是 0,第一位为 0 的数字只有 0 本身,所以,也不满足条件,返回 false
2、初始化反转数字为 0
3、 x 的 前半部分大于后半部分反转值,推出 x 的最后一位,并推入 rev
4、当 x 为偶数位时,满足回文的条件是前半部分等于后半部分反转数,返回 true
5、当 x 为奇数时,x 的前半部分数字等于中值后面数字的反转值,返回 true
6、否则,不满足回文条件
题解
js 题解
var isPalindrome = function (x) { if (~~x < 0 || (~~x % 10 === 0 && x !== 0)) { return false; } let rev = 0; while (~~x > rev) { rev = rev * 10 + (~~x % 10); x /= 10; } return ~~x === rev || ~~x === ~~(rev / 10); }; console.log(isPalindrome(121)); console.log(isPalindrome(-121)); console.log(isPalindrome(10));
|
python 题解
class Solution: def isPalindrome(self, x: int) -> bool: if (x < 0 or (int(x % 10 == 0) and x != 0)): return False reverse = 0 while (x > reverse): reverse = int(reverse * 10) + int(x % 10) x = int(x / 10) print('x:', x) print('reverse', reverse) return x == reverse or x == int(reverse/10)
x = Solution() arr = [121, -121, 10] for item in arr: print(x.isPalindrome(item))
|
本文标题:回文数判断
文章作者:Canace
发布时间:2020-02-27
最后更新:2023-05-26
原始链接:https://canace.site/%E5%9B%9E%E6%96%87%E6%95%B0%E5%88%A4%E6%96%AD/
版权声明:转载请注明出处