第三天-补第三天的内容

昨天是周末,在家休息了一下,没有写文章,所以今天抓紧补回来,看题目吧!

判断回文,我们做的最多的就是判断字符串是不是回文,这里我们还是要用到Python的切片,下面是代码:

class Solution(object):
    def isPalindrome(self, x):
        shuzi = str(x)
        shuzi = shuzi[::-1]
        if shuzi == str(x):
            return True
        return False
复制代码

将数字转换成字符串,直接用切片反转字符串,判断字符串是不是相当即可判断数字是不是回文数字。等等,题目下面说,不使用整数转字符串来解决问题,,看来前面的代码需要调整一下,不使用整数转字符串,代码如下:

class Solution(object):
    def isPalindrome(self, x):
        if x < 0:
            return False
        shuzi = x
        new_number = 0
        kaiguan = True
        while(kaiguan):
            if x >= 10:
                new_number = new_number * 10 + x % 10
                x = x / 10
            else:
                new_number = new_number * 10 + x % 10
                kaiguan = False
        if new_number == shuzi:
            return True
        else:
            return False
复制代码

程序能实现,但是感觉这个方法很笨,将所有的数反转过来,再去比较,能不能只反转一半,然后在比较呢?答案当然是可以,不多说,直接上代码:

class Solution(object):
    def isPalindrome(self, x):
          
        if x < 0:
            return False
        if 0 <= x <10:
            return True
        weishu = len(str(x))
        new_number = 0
        for i in range(weishu / 2):
            new_number = new_number * 10 + x % 10
            x = x / 10
        if weishu % 2 !=0:
            x = x / 10
        if x == new_number:
            return True
        return False
复制代码

这样做能减少一些运算的次数,提高运行的销量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值