【LeetCode】9、Palindrome Number

1、题目要求:

Determine whether an integer is a palindrome. Do this without extra space.

2、如果将数字转化为字符串,就创建了一个新的变量,会占用新的空间。这样子做的代码如下:

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        s = str(x)
        l = 0
        n = len(s)
        r = n-1
        while(l <= n/2-1):
            if s[l] != s[r]:
                return False
            l += 1
            r -= 1
        else:
            return True

故应该想一个不用将数字转化为字符,就可以依次取左边数字、右边数字的方法。核心是巧妙记录left,还有利用x/left/10 和 x/right/10

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x<0:
            return False
        if 0 <= x <10:
            return True
        len = 1
        while(x/len >=10):
            len = len*10
        # 要注意在求len的时候x始终都得是那个x,不然在求len的时候破坏了x,就无法求后续的东西了
        
        left = len
        right = 1
        while(left >= right):
            if (x//left%10 != x//right%10):
                return False
            left /= 10
            right *= 10
        else:
            return True

3、 Python 有两种除法操作符:

一种是单斜杠:得到的是浮点数

12321/10000=1.2321

另一种双斜杠:得到的是整数

12321/10000=1

这里应该用的是双斜杠。


4、关于在函数体前面或者中间出现return 的结果,摘自:作者:肖宇 链接:https://www.zhihu.com/question/23765556/answer/173787459

可把函数体开始到结束的语句看成是一次旅行计划,参数是我们计划携带去旅行的东西。如果没有return语句,就意味着我们不带回任何东西;如果有return语句,则意味着我们带回来一些东西,比如一些旅游照片、纪念品等(也可以直接带回原来带出去的东西)。此外,特别要注意return出现的位置,如果在函数体中间或开头就出现return,则说明这次计划并未(完全)实施,半途夭折了,return后续的语句不会执行。例如:

>>> def f(a,b):
...     return a
...     a = a +b
...     print a
>>> x =  f(1,2)
>>> x
1

该函数f执行到'return a'就结束运行了,并没有执行 'a = a+b; print a'。这个功能和循环体中的break有点像

总而言之,一个函数体里理应执行一个return语句,返回的函数的值总不能矛盾吧。





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值