当前位置:   article > 正文

蓝桥杯2023STEMA考试python试卷(10月)第4~6题_23年10月pythonsteam真题

23年10月pythonsteam真题

第四题、
给定一个字符串s (5≤s长度≤50),请找出S中不含重复字符的最长子串的长度
例如:
s为ababc,其aba、abab、ababc、bab、babc,均为包含量复字符的子串;
而a、b、ab、ba、abc、bc、c均为不含重复字符的子串,最长子串有abc,所以不含重复字符的最长子串的长度为3。
输入描述:输入一个字符串s (5≤s长度≤50)
输出描述:输出一个整数,表示s中不含重复字符的最长子串的长度
样例输入: ababc
样例输出:3

解题思路:
1、通过切片得到对应的所有类型字符串。

a=input()
b=[]
for i in range(0,len(a)+1):
    for j in range(i+1,len(a)+1):
        if a[i:j] not in b:
            b.append(a[i:j])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、获取到对应的字符串后,则开始对于具有重复类型的字符进行筛除。

##b[-1]代表刚刚加入b列表进来的切片出来元素,列如'a', 'ab', 'aba', 'abab', 'ababc',.....
##b[-1][i] 代表 切片出来元素中第几位上的单个元素,例如:b[-1]='abab'  则b[-1][0]=‘a’
            if len(b[-1])==2 and b[-1][0]==b[-1][1]:
 ##当是两位时,我只需要判断是否相等
                b.remove(b[-1])
            elif len(b[-1])>=3:
 ##当是3位以上,需要判断每一位是否相等,采用到冒泡算法,如下14~17行
                B = 0  
 ##状态值,状态值=0,则无重复位,状态值=1,则有重复位
                for z in range(len(b[-1])):
                    for s in 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/64241
推荐阅读
相关标签
  

闽ICP备14008679号