贵港北京网站建设,宁波制作网站企业有哪些,wordpress删除模板,平板电视seo优化关键词题目
给你一个整数 xxx #xff0c;如果 xxx 是一个回文整数#xff0c;返回 truetruetrue #xff1b;否则#xff0c;返回 falsefalsefalse 。回文数是指正序#xff08;从左向右#xff09;和倒序#xff08;从右向左#xff09;读都是一样的整数。
例子
输入如果 xxx 是一个回文整数返回 truetruetrue 否则返回 falsefalsefalse 。回文数是指正序从左向右和倒序从右向左读都是一样的整数。
例子
输入x121x 121x121 输出truetruetrue输入x−121x -121x−121 输出falsefalsefalse 解释从左向右读, 为 −121-121−121 。 从右向左读, 为 121−121-121− 。因此它不是一个回文数。输入x10x 10x10 输出falsefalsefalse 解释从右向左读, 为 010101 。因此它不是一个回文数。
思路
1. 首尾测试
为了判断是否回文数判断首尾是否相等然后左指针和右指针左移和右移可以不用计算到最后只要在中途发现不对称就可以直接返回False否则最后返回True。如果输入的是空字符串也应该返回True因为空字符串也是回文数。
时间复杂度O(n)O(n)O(n)空间复杂度O(1)O(1)O(1)
class Solution:def isPalindrome(self, x: int) - bool:s str(x)# 空字符串也是回文数if not s:return Truei 0j len(s) - 1# 这表示只要 i 不小于 j即左指针越过右指针或者指向同一个元素就说明是回文数。while i j:if s[i] s[j]:i 1j - 1# 只要不对称就返回Falseelse:return False# 判断完毕 返回Truereturn True2. 数学
如果是负数直接不是回文数如果是正数则将数值倒过来计算然后比较是否和原数值相等。
时间复杂度O(log(x))O(log(x))O(log(x))空间复杂度O(1)O(1)O(1)
class Solution:def isPalindrome(self, x: int) - bool:n 0if x 0:return Falsey xwhile y 0:n n * 10 y % 10y y // 10return n x