iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python真题案例之最长回文子串周期串详解
  • 377
分享到

Python真题案例之最长回文子串周期串详解

2024-04-02 19:04:59 377人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一、最长回文子串问题描述?问题分析?代码实现?二、周期串问题描述?问题分析?代码实现?一、最长回文子串 问题描述? 大家已经熟悉了AABCC、AABBCC这种类型的字符串是回文串

一、最长回文子串

问题描述?

大家已经熟悉了AABCC、AABBCC这种类型的字符串回文串

也就是说,排除掉字符串中的各种字符,字母不区分大小写,完成最长回文子串挑选即可。 如果有几个相同长度的字符串,需要使用最左侧的子串,输出的时候原样输出

样例输入:

“Confuciuss say:Madam,I'm Adam”

样例输出:

“Mandam,I'm Adam”

问题分析?

第一步应该去除原字符串内的特殊字符得到一个只含有字母的字符串

第二步就是进行纯字母字符串中回文子串的挑选

将指定的回文字符串挑选出来还需要进行原样输出

所以应记录一下子串首尾字符在原字符串中的坐标。

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

代码实现?

老规矩先上运行结果:

这里使用了两种实现方式,一种是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
mystr=sys.stdin.readline().strip()
for i in range(1,len(mystr)):
    if len(mystr)%i==0:
        for j in range(0,len(mystr)//i-1):
            if mystr[j*i:j*i+i]!=mystr[(j+1)*i:(j+1)*i+i]:
                # print(mystr[j*i:j*i+i],"--",len(mystr[(j+1)*i:(j+1)*i+i]))
                break
        else:
            mmax=i
    if mmax!=0:
        break
    
print(mmax)

ᴴᴬᵛᴱ ᴬ ᴳᴼᴼᴰ ᵀᴵᴹᴱ !

到此这篇关于Python真题案例之最长回文子串 周期串详解的文章就介绍到这了,更多相关Python 最长回文子串内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python真题案例之最长回文子串周期串详解

本文链接: https://www.lsjlt.com/news/141615.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python真题案例之最长回文子串周期串详解
    目录一、最长回文子串问题描述问题分析代码实现二、周期串问题描述问题分析代码实现一、最长回文子串 问题描述 大家已经熟悉了AABCC、AABBCC这种类型的字符串是回文串。 也就是说,...
    99+
    2024-04-02
  • Python最长回文子串问题
    目录Python最长回文子串1.暴力解法(Brute Method)2.中心扩散法3.动态规划python练习–最长回文子串题目描述解题思路代码Python最长回文子串 ...
    99+
    2024-04-02
  • Python和Java解题:最长回文子串
    本次题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:// 输入: "babad"// 输出: "bab"// 注意: "aba&q...
    99+
    2023-06-02
  • JavaScript求解最长回文子串的方法分享
    目录题目描述题解解决方案思路一:暴力法思路二:最长公共字串思路三:中心拓展思路四:Manacher 算法题目描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最...
    99+
    2022-11-13
    JavaScript 最长回文子串 JavaScript 回文子串
  • GoJava算法之K个重复字符最长子串详解
    目录至少有K个重复字符的最长子串方法一:分治(Java)方法二:滑动窗口(go)至少有K个重复字符的最长子串 给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串,&nb...
    99+
    2024-04-02
  • Python真题案例之蛇形数组详解
    问题描述 输入一个正整数n 在n*n的方阵内填入1,2,3,4…n*n,要求填成蛇形。(回旋的向中间收敛) 样例输入: 4 样例输出: 不必严格按照格式输出, 问题分析 蛇形填...
    99+
    2024-04-02
  • Python真题案例之二分法查找详解
    目录写在前面的话问题描述原理分析1.实现步骤2.图解参考代码写在前面的话 学了Python一些基础知识之后,相信大家对Python使用方法有了一定的感悟,想要追求深层次的东西还要细细...
    99+
    2024-04-02
  • python 动态规划问题解析(背包问题和最长公共子串)
    目录背包问题最长公共子串背包问题 现在要往一个可以装4个单位重量的背包里怎么装价值最高:A重量1个单位,价值15;B重量3个单位,价值20;C重量4个重量,价值30 使用动态规划填充...
    99+
    2024-04-02
  • Python真题案例之错位键盘 单词长度 字母重排详解
    目录前言一、错位键盘问题描述问题分析代码实现二、单词的平均长度问题描述问题分析代码实现三、字母重排问题描述问题分析代码实现四、Tex括号问题问题描述问题分析代码实现前言 前面一篇分享...
    99+
    2024-04-02
  • Python真题案例之小学算术 阶乘精确值 孪生素数 6174问题详解
    目录前言小学生算术问题描述问题分析代码实现阶乘精确值问题描述问题分析代码实现孪生素数问题描述问题分析代码实现6174问题问题描述问题分析代码实现前言 今天给大家分享一下刷到的关于数值...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作