9. 回文数

题目描述:

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例如,121 是回文,而 123 不是。-121、10不是回文.

提示:-2^{31} <= x <= 2^{31} - 1

思路:想办法将这个整数逆转,与原数比较即可。

class Solution:
    def isPalindrome(self, x: int) -> bool:
        str0 = str(x)
        list0 = list(str0)
        list1 = reversed(list0)
        str1 = ''.join(list1)
        return str0 == str1
        
        # 一开始不清楚字符串还可以切片,以为就列表可以切片
        # 以下为简化版:一条代码答题
        # reurn str(x) == str(x)[::-1]

进阶:你能不将整数转为字符串来解决这个问题吗?

思路:负数不可能回文,只有正数,所以逐位逆转,逆转后再比较即可。

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0 :
            return False
        reversed_num = 0    # 逆转数
        remain_digit = x    # 除去末位的数,刚开始为x
        while remain_digit > 0:
            last_digit = remain_digit % 10     # 末位
            reversed_num = reversed_num*10 + last_digit    # 逐位逆转
            remain_digit = remain_digit//10
        return reversed_num == x

本人新手,若有错误,欢迎指正;若有疑问,欢迎讨论。若文章对你有用,点个小赞鼓励一下,谢谢,一起加油吧!

你可能感兴趣的:(LeetCode题目,算法)