做a的视频在线观看网站/seo描述是什么意思
# Determine whether an integer is a palindrome. Do this without extra space. # 判断一个整数是否是回文, 不能使用新的空间, 我的理解就是不能使用新的变量来存储数据 # 思路很简单, 就是先取最高位, 再取最低位, 两个比较是否相等, 相等的话就接着下一步, 不相等就返回False # 重点在于怎样取最高位和最低位, 取整也就是除以和整数位数相等的10的次方, 即10^len(num) # 取最低位就是除以10, 除完之后取整用到的被除数变为10^(len(num) - 2) class Solution(object):def isPalindrome(self, x):if x < 0:return False ranger = 1 while x / ranger >= 10:ranger *= 10 # b = 10 ** int(math.log10(123)) # print(ranger) while x:left = x // rangerright = x % 10 # print('left = ', left, 'right = ', right) if left != right:return False x = (x % ranger) // 10 print(x)ranger /= 100 return True def isPalindrome2(self, x):if x < 0:return False p, res = x, 0 while p:res = res * 10 + p % 10 # 生成倒序的x p = p // 10 return res == xif __name__ == '__main__':num = 12321 s = Solution()print(s.isPalindrome(num))
如题:
判断一个整数是否为回文,题目要求说负数不是回文,而且不让使用额外的空间,我理解的额外空间就是不再创建新的变量存储X,不知道对不对,还望大神给我解答
再把思路捋一捋:
第一步创建一个和原数字数量级一致的整数ranger,比如我的X是123, 那这个ranger就是100, X是1234, ranger就是1000. 懂我意思?生成这个ranger有两种方法:
1 ranger = 10 ** len(X) 简单粗暴
2 ranger = 10 ** int(math.log10(X)) 思路是一样的, 我代码中的方法太弱鸡了
两个乘号代表乘方
第二步获得X的最高位和最低位,比较最高位和最低位是否相同,如果不相同那就返回False
如果相同,就把X的头和尾去掉,ranger要除以100, 再重复上个步骤
最高位为 left = X // ranger
最低位为 right = X % 10
注意:python中取整是双斜杠 //
乘方是双乘号 **
取余是单百分号 %