所谓回文字符串,就是正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。即是对称结构Python系列教程,免费获取,遇到bug及时反馈,讨论交流可加扣裙<60 61 15 02 7>

判断回文字符串

方法一:


方法二:

判断回文链表

思路

  1. 我们需要找到链表中点(快慢指针法)
  2. 将链表后半段倒置逆序排序
  3. 将前半段和后半段遍历比较,判断是否为回文链表,偶数情况,使用偶数定位中点策略,要确定是返回上中位数或下中位数

注意事项:

快慢指针定位中点时要区分奇偶情况,奇数情况,中点位置不需要矫正,偶数情况,使用偶数定位中点策略,要确定是返回上中位数或下中位数 如果是返回上中位数,后半部分串头取next,如果是返回下中位数,后半部分串头既是当前节点位置,但前半部分串尾要删除掉当前节点

代码


测试

判断回文数

思路

映入脑海的第一个想法是将数字转换为字符串,并检查字符串是否为回文。但是,这需要额外的非常量空间来创建问题描述中所不允许的字符串。

第二个想法是将数字本身反转,然后将反转后的数字与原始数字进行比较,如果它们是相同的,那么这个数字就是回文。 但是,如果反转后的数字大于 int.MAX,我们将遇到整数溢出问题。

按照第二个想法,为了避免数字反转可能导致的溢出问题,为什么不考虑只反转int 数字的一半?毕竟,如果该数字是回文,其后半部分反转后应该与原始数字的前半部分相同。

例如,输入 1221,我们可以将数字“1221”的后半部分从“21”反转为“12”,并将其与前半部分“12”进行比较,因为二者相同,我们得知数字 1221 是回文。

让我们看看如何将这个想法转化为一个算法。

算法

首先,我们应该处理一些临界情况。所有负数都不可能是回文,例如:-123 不是回文,因为 - 不等于 3。所以我们可以对所有负数返回 false。

现在,让我们来考虑如何反转后半部分的数字。 对于数字 1221,如果执行 1221 % 10,我们将得到最后一位数字 1,要得到倒数第二位数字,我们可以先通过除以 10 把最后一位数字从 1221 中移除,1221 / 10 = 122,再求出上一步结果除以10的余数,122 % 10 = 2,就可以得到倒数第二位数字。如果我们把最后一位数字乘以10,再加上倒数第二位数字,1 * 10 + 2 = 12,就得到了我们想要的反转后的数字。 如果继续这个过程,我们将得到更多位数的反转数字。

现在的问题是,我们如何知道反转数字的位数已经达到原始数字位数的一半?

我们将原始数字除以 10,然后给反转后的数字乘上 10,所以,当原始数字小于反转后的数字时,就意味着我们已经处理了一半位数的数字。

代码

判断字符串_python实现--判断回文字符串、回文链表、回文数相关推荐

  1. python判断字符串中包含某个字符串_Python中最常用的字符串方法!

    译 / 忧郁的红秋裤 字符串是字符序列.Python中内置的string类代表基于Unicode国际字符集的字符串.除了Python中常见的操作外,字符串还有一些专属于它们的附加方法.下图显示了所有这 ...

  2. python输入数字字符串_Python笔记—基本数据类型—数字字符串

    数字 int #整型 所有的功能,都在int里 a = 123v= a.bit_length() #软件自带函数联想 print(v)-int 将字符串转换成数字 a= '123' print(typ ...

  3. python输出数字和字符串_Python中的数值和字符串

    一.Python中的数值 python中的数值分为三类:整型.浮点型和复数 1.整型: python3的整型支持各种类型的整数: python的整数值有4种表达形式: a.十进制形式,最普通的整数就是 ...

  4. c字符串截取一部分字符串_Python如何截取一段字符串?

    如果想截取字符串中的一段字符就需要用到切片. 切片方法适用于字符串.列表.元组 ·切片使用索引值来限定范围,从一个大的字符串中切出小的字符串: ·列表和元组都是有序的集合,都能够通过索引值获取到对应的 ...

  5. python unicode转字符串_Python: 在Unicode和普通字符串之间转换

    Unicode字符串可以用多种方式编码为普通字符串, 依照你所选择的编码(encoding):Toggle line numbers1 #将Unicode转换成普通的Python字符串:"编 ...

  6. python中如何连接两个字符串_python中5种连接字符串的方法

    字符串是Python中常用的数据类型,在开发过程中可以对字符创进行截取并与其他字符创进行连接.本文为大家介绍了5种连接字符串的方法. 1.加号 如果有其他编程语言开发经验的人,肯定知道很多语言里面是用 ...

  7. python判断日期_python如何判断日期的合法性?

    判断日期的合法性,有两层含义,一是日期格式是否合法,二是格式合法后,其所表示的实际的那一天,是否真实存在!在python中,做这个合法性的判断,so easy!~~ 我们需要用到datetime模块中 ...

  8. python判断语句_python条件判断语句if elif else使用

    假设网站现在有100个充值用户,现在要给充值1000元以上的大客户返现,那么就需要在程序里进行判断.这就用到了条件判断语句. 一.if语句 1.if语句长相: if条件表达式: 满足条件时要做的事情1 ...

  9. python判断整除_python 如何判断整除?

    慕容708150 题:如何判断一个数能否被3整除?(或者被其他任意一个数整除)方法一:取余x = input("input an number:")  if x % 3 == 0: ...

最新文章

  1. 老师学python可以干嘛-Python除了爬虫,还能干啥?
  2. jq执行2次同样的方法怎么让第一次执行的不触发_他们说,这段代码你能看得懂她的开始,却猜不中她的结尾。...
  3. sudo apt-get install 安装软件总是出现“404 NOT FOUND” 错误的解决方案 !
  4. Android:sqlite问题小结
  5. deepfake 图片_DeepFake克星来了!简单2步算法,造假图像无处可逃
  6. x86架构下 CF与OF标志位 带符号和无符号运算 详解
  7. python两个字典合并,两个list合并
  8. Vue全局API总结
  9. ARTetris-AR版俄罗斯方块的源码解析
  10. 由alpha matte生成trimap
  11. iOS ReactiveCocoa 最全常用API整理
  12. 【元胞自动机】基于matlab元胞自动机双边教室疏散【含Matlab源码 1208期】
  13. .net7二维码跨平台完美解决方案
  14. peewee mysql_tornado+peewee-async+peewee+mysql(一)
  15. 大白菜装机教程win10_装机吧教你没有光盘的情况下:如何重装系统
  16. html保存当前页面为图片,将html页面保存成图片,图片写入pdf的实现方法(推荐)
  17. Yii2实现手机二维码扫一扫登入
  18. 【网络技术题库梳理8】网络系统结构与设计的基本原则
  19. 大前端学习记二开发准备
  20. java作业题exercise1

热门文章

  1. stm32--对固件库的认识2
  2. 2.4带通采样的实际问题
  3. 【PC工具】录屏软件,必须好用无广告!
  4. linux svn强制注释,svn强制提交时添加注释
  5. 单片机联网,UIP实现tcp/udp协议
  6. 想写游戏吗?手把手教你SDL的安装及配置(亲测有效!)
  7. debian下编译安装poco
  8. SpringCloud2.0入门4-springboot-admin监控
  9. linux下查看cpu负载及分析
  10. python进阶资源整理