第三天-补第三天的内容

原文链接:https://juejin.im/post/5c207e80e51d4516c73caa9b

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

判断回文,我们做的最多的就是判断字符串是不是回文,这里我们还是要用到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
复制代码

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

展开阅读全文
博主设置当前文章不允许评论。

没有更多推荐了,返回首页