【Python 百炼成钢】最长回文子串、周期串

26 阅读4分钟

可以定义一个数组长度与纯字母子串一样长。在进行筛选空白字符的时候记录该字符在原串的索引

代码实现🪐


老规矩先上运行结果:

在这里插入图片描述

这里使用了两种实现方式,一种是c语言风格一种是Python

两者主要区别就是Python可能会有一些库方便进行判断。

C语言风格实现

import sys

mystr=sys.stdin.readline().strip()

charr=""

charri=[]

mymax=-1

x=0

y=0

flag=True

j=-1

for i in mystr:

j+=1

if ord(i)<65 or ord(i)>122:

continue

else:

charr+=i

charri.append(j)

charr=charr.lower()

print(charr,charri)

i=0

while i<len(charr):

j=i

while j<len(charr):

k=i

while k<=j:

if charr[k]!=charr[i+j-k]:

flag=False

break

k+=1

if flag:

if mymax<j-i+1:

mymax=j-i+1

x=i

y=j

flag=True

j+=1

i+=1

print("第一种实现方式:")

print(x,y)

print(mystr[charri[x]:charri[y]+1:])

python风格实现

import sys

mstr=sys.stdin.readline().strip()

tstr=""

snum=[]

smax=0

x=0

y=0

j=0

for i in mstr:

if ord(i)>=65 and ord(i)<=122:

tstr+=i

snum.append(j)

j+=1

tstr=tstr.lower()

for i in range(len(tstr)):

for j in range(i,len(tstr)+1):

if tstr[i:j]==tstr[i:j][::-1] and len(tstr[i:j])>smax:

smax=len(tstr[i:j])

x=i

y=j

print("第二种实现:")

print(x,y)

print(mstr[snum[x]:snum[y-1]+1])

二、周期串在这里插入图片描述

=====================================================================================================================================================


问题描述🪐


如果一个字符串可以由一个长度为k的子串重复多个周期得到,那么我们说该串是以k为周期的周期串

例如:qweqweqwe(以3为周期),abababab(可以以2,4为周期)

我们的任务就是输入一个字符串然后找出该串的最小周期数

样例输入:HoHoHo

样例输出:2

问题分析🪐


先是进行字符串的读取,然后选定一个周期,判断字符串中下一周期子串与上一周期子串是否对应位置相同

有一个位置不相同的就判定为不是周期串,因为找的是最小周期可以从1开始判定

找最大周期数就从主串长度开始判断起

代码实现🪐


老规矩先上运行结果:

在这里插入图片描述

import sys

mmax=0

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

了解详情:docs.qq.com/doc/DSnl3ZG…