所谓回文字符串,就是正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。即是对称结构

Python系列教程,免费获取,遇到bug及时反馈,讨论交流可加扣裙<60 61 15 02 7>

判断回文字符串

方法一:

方法二:

判断回文链表

思路我们需要找到链表中点(快慢指针法)

将链表后半段倒置逆序排序

将前半段和后半段遍历比较,判断是否为回文链表,偶数情况,使用偶数定位中点策略,要确定是返回上中位数或下中位数

注意事项:

快慢指针定位中点时要区分奇偶情况,奇数情况,中点位置不需要矫正,偶数情况,使用偶数定位中点策略,要确定是返回上中位数或下中位数 如果是返回上中位数,后半部分串头取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判断字符串回文_python实现--判断回文字符串、回文链表、回文数相关推荐

  1. python中如何判断两个字符串是否相等_python怎样判断两个字符串是否相同

    原标题:python怎样判断两个字符串是否相同 python中,判断两个字符串是否相等或一样,可以使用==或者is来判断:判断不一样可以使用 is not. 示例 使用注意事项 1.有时候两个字符串打 ...

  2. python判断字符串不相等_python怎么判断两个字符串不相等

    字符串操作是编程语言中经常用到的,常见的有字符串增.删.改.查.在python中,判断两个字符串是否相等或一样,可以使用==或者is来判断:判断不一样可以使用 is not. 示例 使用注意事项 1. ...

  3. python判断列表中含有_Python:判断列表中含有字符串且组成新的列表打印输出-Dotest董浩...

    ''' 题一:判断列表中含有字符串且组成新的列表打印输出 知识点:列表.列表的增删改查.for循环.if判断 ''' #@Author:Dotest软件测试 #@QQ:1274057839 names ...

  4. python 内置方法赋值_Python内置数据结构之字符串str

    1. 数据结构回顾 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于字符串,但是字符串是不可变序列,因此所有的元素赋值和切片赋值都是非法的. >>> ...

  5. python获得用户输入的一个字符串(长度3)_Python笔记(3)-字符串

    字符串表示方式 第一种方式: str1 = 'redhat' 第二种方式: str2 = "redhat" 第三种方式: str3 = """redh ...

  6. python对字符串进行加密_python学习:实现将字符串进行加密

    ''' 题目描述 1.对输入的字符串进行加解密,并输出. 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B:字母Z时则替换为a: 当内容是数字 ...

  7. python接口返回json处理_python 接口返回的json字符串实例

    如下所示: JSON 函数 使用 JSON 函数需要导入 json 库:import json. 函数描述 json.dumps将 Python 对象编码成 JSON 字符串 json.loads将已 ...

  8. python怎么将字符串逆序_python中如何把一个字符串顺序逆序反转的几种方法?

    如 a='123456789' 反转成 a='987654321' 第一种方法:使用字符串切片 >>> a='123456789' >>> a = a[::-1] ...

  9. python判断回文_Python实现判断一个整数是否为回文数算法示例

    本文实例讲述了Python实现判断一个整数是否为回文数算法.分享给大家供大家参考,具体如下: 第一个思路是先将整数转换为字符串,再将字符串翻转并与原字符串做比较 def isPalindrome(se ...

最新文章

  1. hashcode的作用_看似简单的hashCode和equals面试题,竟然有这么多坑!
  2. oracle 变量赋值_【赵强老师】Oracle存储过程中的out参数
  3. TatukGIS - GisDefs - CheckDir 函数
  4. 2018android旗舰手机,2018 年发布的 Android 手机,哪一部是你心目中的最佳手机?理由是什么?...
  5. C++shortest common supersequence最短公共超序列算法的实现(附完整源码)
  6. vue表格刷新数据_Vue.js+Layer表格数据绑定与实现更新的实例
  7. 第三十篇:SOUI模块结构图及SOUI框架图
  8. 如何使用此功能强大的工具将Wemo添加到Homekit
  9. python使用函数的头文件_Python3.6下在Python中调用C函数
  10. 模拟ARP报文发送,通过改变拓扑结构,观察报文发送方法以及途径
  11. Tcl Tutorial 笔记5 ·switch
  12. 我设想的可扩展结构(插件) (二)
  13. 禁用Dropbear中DNS反向查询连接客户端地址补丁
  14. ENSP模拟AC/AP配置
  15. c语言银行卡六位密码编译,用c语言生成六位的随机密码。
  16. 米家扫地机器人静音模式在哪_米家扫地机器人2代发布日期确定:带拖地功能...
  17. flash player 9 安装错误:您尝试安装的adobeflashplayer版本不是最新版本
  18. 深入学习Linux摄像头(一)v4l2应用编程
  19. echarts 双Y轴,双X轴, 折线图折点,折点与直方对应
  20. php公众号自动回复链接,微信公众号自动回复超链接怎么添加-微信公众号添加自动回复超链接的方法 - 河东软件园...

热门文章

  1. 太大如何翻页固定表头_外行学 Python 爬虫 第六篇 动态翻页
  2. 计算机网络中流的定义,计算机网络的基本概念-Read.PPT
  3. eclipse php链接mysql_eclipse怎么连接mysql
  4. SpringBoot整合Encahce后,访问页面页面出现异常信息,无法获取返回数据
  5. python多线程tcp客户端_基于Python多线程的TCP客户端/服务端应用示例
  6. 预测评价系统_「机器学习」一文读懂分类算法常用评价指标
  7. 导入项目时中文乱码的消除
  8. java 序列化快捷键_IntelliJ IDEA生成 Serializable序列化UID的快捷键
  9. 如何把一个整数转化成数组_「leetcode891」给定一个整数数组 A,考虑 A 的所有非空子序列...
  10. faststart可以卸载吗_你的手机你做主!免 ROOT 卸载安卓手机预装APP