【Leetcode】| python编程思维练习-回文数

题目要求:

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

示例:

  • 示例 1:
    输入: 121
    输出: true
  • 示例 2:
    输入: -121
    输出: false
    解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

  • 示例 3:
    输入: 10
    输出: false
    解释: 从右向左读, 为 01 。因此它不是一个回文数。

进阶:

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

范例代码:

  • 未进阶版本
# 此处先转化为字符串类型; 判断反转的字符串是否与未反转的字符串相同?
#     如果相同, 则返回True;
#     如果不相同, 则返回False;
class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        return "x" == "x"[::-1]
  • 进阶版本

思路:

  • 负数不是回文数
  • 10, 20,20,40~90……不是回文数;
  • 假设需要判断的数为x,用一个名为back的数储存x后半段的数并且翻转,最后再比较x与back是否相等即可。如下图所示:
    eg: 124421, 121

这里写图片描述

  • 代码如下:


class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        # 负数和10,90,100等不是回文数
        if x < 0 or (x!=0 and x%10==0):
            return False
        # 0是回文数;
        elif x == 0:
            return True

        # 其他情况, 分别计算出back和x的值, 判断。
        back = 0
        while x > back:
            back = back*10 + x%10
            x = x/10

        # 124421: x==back
        # 121: x==back/10
        return x==back or x==back/10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值