LeetCode Algorithm 9. 回文数
Posted _Alex_007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 9. 回文数相关的知识,希望对你有一定的参考价值。
Ideas
算法:迭代
数据结构:一个变量就OK
思路:
- 首先负数肯定都不是回文数,所以遇到负数可以直接return false;
- 针对最后一位是0的情况,因为0不能作为开头,所以只要最后一位数字是0并且这个数字本身不是0,也可以直接return false;
- 突然间想到之前做的LeetCode Algorithm 7. 整数反转,根据回文数的定义,把一个整数反转之后那么它应该还等于它本身;
- 直接翻转的话有可能会导致int类型整数溢出,所以需要优化一下:因为回文数是对称的,所以从中间位置往后的翻转操作都是多余的,只需要后一半数就可以了;
- 针对奇数个位数的回文数,可以直接把翻转后的数字的最后一位去掉。
Code
C++
class Solution
public:
bool isPalindrome(int x)
if (x < 0 || (!(x % 10) && x)) return false;
int rev = 0;
while (rev < x)
rev = rev * 10 + x % 10;
x /= 10;
return rev == x || rev / 10 == x;
;
Python
class Solution:
def isPalindrome(self, x):
if x<0:
return False
if x<10:
return True
if x % 10 == 0:
return False
x_str = str(x)
if x_str[::-1] == x_str:
return True
return False
以上是关于LeetCode Algorithm 9. 回文数的主要内容,如果未能解决你的问题,请参考以下文章