当前位置: 首页 > news >正文

9. 回文数

题目

给你一个整数 xxx ,如果 xxx 是一个回文整数,返回 truetruetrue ;否则,返回 falsefalsefalse 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例子

  1. 输入:x=121x = 121x=121
    输出:truetruetrue
  2. 输入:x=−121x = -121x=121
    输出:falsefalsefalse
    解释:从左向右读, 为 −121-121121 。 从右向左读, 为 121−121-121 。因此它不是一个回文数。
  3. 输入:x=10x = 10x=10
    输出: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 True

2. 数学

如果是负数,直接不是回文数;如果是正数,则将数值倒过来计算,然后比较是否和原数值相等。

  • 时间复杂度: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
http://www.lryc.cn/news/45411.html

相关文章:

  • [SV]SystemVerilog线程之fork...join专题
  • 你看这个spring的aop它又大又宽
  • 设计模式-创建-单例模式
  • 使用mybatis-plus-generator配置一套适合你的CRUD
  • MATLAB实现各种离散概率密度函数(概率密度/分布/逆概率分布函数)
  • 指针的基本知识
  • 当你的IDE装上GPT
  • 一图看懂 pathlib 模块:面向对象的文件系统路径, 资料整理+笔记(大全)
  • 前端如何将node.js 和mongodb部署到linux服务器上
  • mysql数据迁移
  • 【4.3蓝桥备战】小朋友崇拜圈、正则问题
  • MySQL读写分离中间件
  • 【Spring源码设计模式】单例模式外带设计模式的单例模式
  • go并发编程 —— singleflight设计模式
  • 【LeetCode】二叉树的中序遍历(递归,迭代,Morris遍历)
  • 银行数字化转型导师坚鹏:数字化转型背景下的银行柜员提升之道
  • ChatGPT的平替来了?一文总结 ChatGPT 的开源平替,你值得拥有
  • 关于数据同步工具DataX部署
  • 如何开发JetBrains插件
  • 企业采购成本管理的难题及解决方案
  • 龙蜥白皮书精选:基于 SM4 算法的文件加密(fscrypt)实践
  • 【SpringBoot入门】SpringBoot的配置
  • react 学习整理
  • 物理引擎系统-ode
  • 函数设计—参数规则
  • rsync远程同步
  • 中国大陆IP段(仅大陆地区)【2020-07-24】
  • 从零开始的嵌入式Linux生活(一) 背景介绍
  • 后缀为whl的文件是什么?如何安装whl文件?学习一下(22)
  • 整合Juit