LeetCode Algorithm 9. 回文数

Posted _Alex_007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 9. 回文数相关的知识,希望对你有一定的参考价值。

9. 回文数

Ideas

算法:迭代
数据结构:一个变量就OK
思路:

  1. 首先负数肯定都不是回文数,所以遇到负数可以直接return false;
  2. 针对最后一位是0的情况,因为0不能作为开头,所以只要最后一位数字是0并且这个数字本身不是0,也可以直接return false;
  3. 突然间想到之前做的LeetCode Algorithm 7. 整数反转,根据回文数的定义,把一个整数反转之后那么它应该还等于它本身;
  4. 直接翻转的话有可能会导致int类型整数溢出,所以需要优化一下:因为回文数是对称的,所以从中间位置往后的翻转操作都是多余的,只需要后一半数就可以了;
  5. 针对奇数个位数的回文数,可以直接把翻转后的数字的最后一位去掉。

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. 回文数的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Golang 9.回文数

[LeetCode]9. 回文数

leetcode 9 回文数

LeetCode-9回文数

leetcode-9.回文数(水仙花数)

LeetCode 9.回文数