Python3回文相关算法小结
[本文出自天外归云的博客园]
总结一下关于回文相关的算法:
- 判断字符串本身是否是回文
- 返回字符串中的所有子串
- 找到字符串中包含的所有回文
- 判断字符串中是否包含回文
- 将字符串变成一个不包含回文的字符串
代码如下:
# 判断字符串本身是否是回文
def is_huiwen(str, i=0):
# 回文至少长度为2
if len(str) == 1:
return False
# 撞针法判断是否是回文字符串
while True:
if i >= len(str) - i:
return True
if str[i] != str[len(str) - i - 1]:
return False
i += 1 # 返回字符串中所有的子串
all_substr = lambda str: [str[i:i + x + 1] for x in range(len(str)) for i in range(len(str) - x)] # 找到字符串中包含的所有回文
def find_all_huiwen(str, ret=[]):
substrs = all_substr(str)
# 遍历字符串中的所有子串并找出所有回文子串
for i in range(len(substrs)):
if is_huiwen(substrs[i]):
ret.append(substrs[i]) # 判断字符串中是否包含回文
def contain_huiwen(str):
substrs = all_substr(str)
# 遍历字符串中所有子串并判断字符串中是否包含回文子串
for i in range(len(substrs)):
if is_huiwen(substrs[i]):
return True
return False # 将字符串变成一个没有回文的字符串
def no_huiwen(str, ret="", i=0):
# 从字符串的索引第0位开始到字符串索引末位结束
while i < len(str) - 1:
# 确保新生成的字符串不包含回文
if not contain_huiwen(ret + str[i]):
ret += str[i]
# 逐位判断
i += 1
return ret if __name__ == '__main__':
str = "abccbabc"
find_all_huiwen(str)
print(contain_huiwen(str))
print(no_huiwen(str))
Python3回文相关算法小结的更多相关文章
- Java判断回文数算法简单实现
好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...
- LeetCode: Palindrome 回文相关题目
LeetCode: Palindrome 回文相关题目汇总 LeetCode: Palindrome Partitioning 解题报告 LeetCode: Palindrome Partitioni ...
- hihoCoder #1032 : 最长回文子串 [ Manacher算法--O(n)回文子串算法 ]
传送门 #1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相 ...
- Manacher算法--O(n)回文子串算法
转自:http://blog.csdn.net/ggggiqnypgjg/article/details/6645824 O(n)回文子串算法 注:转载的这篇文章,我发现下面那个源代码有点bug... ...
- Manacher's algorithm: 最长回文子串算法
Manacher 算法是时间.空间复杂度都为 O(n) 的解决 Longest palindromic substring(最长回文子串)的算法.回文串是中心对称的串,比如 'abcba'.'abcc ...
- hdu----(4513)吉哥系列故事——完美队形II(manacher(最长回文串算法))
吉哥系列故事——完美队形II Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
- 学习manacher(最长公共回文串算法)
给定一个字符串求出其中最长个公共回文串. 举列子: abab -->回文串长度为2 以前的算法诸如: 扩展kmp求法过于麻烦,看到有一篇博文(http://leetcode.com/2011 ...
- hdu 3068 最长回文 manacher算法(视频)
感悟: 首先我要Orz一下qsc,我在网上很难找到关于acm的教学视频,但偶然发现了这个,感觉做的很好,链接:戳戳戳 感觉这种花费自己时间去教别人的人真的很伟大. manacher算法把所有的回文都变 ...
- [转]O(n)回文子串算法 Manacher算法
这里,我介绍一下O(n)回文串处理的一种方法.Manacher算法.原文地址:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear- ...
随机推荐
- lnmp+zabbix 3.2 的编译安装
yum install pcre* gcc gcc-c++ autoconf automake zlib libxml libjpeg freetype libpng gd curl zlib-dev ...
- HDU 4532 湫秋系列故事——安排座位 (组合+DP)
湫秋系列故事——安排座位 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
- XSS安全处理
Security.class.php文件 <?php class Security { public $filename_bad_chars = array( '../', '<!--', ...
- 一段js代码
原文地址 [].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math ...
- nginx last 和break redirect 和 permanent
一.last & break (1)last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异. 注意一点就是,他们会跳过所有的在他们之后的rewrite 模块 ...
- (面试)Statement和PrepareStatement有什么区别
(1)Statement用于执行静态sql语句,在执行时,必须指定一个事先准备好的sql语句.PrepareStatement是预编译的sql语句对象,sql语句被预编译并保存在对象中.被封装的sql ...
- Oracle数据库创建表是有两个约束带有默认索引
Oracle数据库创建表是有两个约束带有默认索引.1.主键primary Key:唯一索引.非空2.唯一Unique:唯一索引,可以是空值如果没有设定主键和唯一约束,表中不会有默认索引的. 建立主键/ ...
- DCM 图片查看
因为要处理一些医学图像,需要把dcm格式的文件转换成jpg格式.本来用Sante DICOM Editor用得挺好的,方便查看dcm文件,但是在转换上每次只能转一张(本人没有找到用该软件批量转格式的方 ...
- JPA的多表复杂查询
转 JPA的多表复杂查询:详细篇 原文链接: https://mp.weixin.qq.com/s/7J6ANppuiZJccIVN-h0T3Q 2017-11-10 从小爱喝AD钙 最近工作中由于 ...
- A标签href属性详解--记录八
1.去掉<a>标签的下划线 <ul style=" list-style-type:none; margin:0;color:Gray; font-size:11px;ma ...