PTA 7-5 子串与子列 (25 分)

作者: freesan44 | 来源:发表于2021-10-28 07:56 被阅读0次

题目

子串是一个字符串中连续的一部分,而子列是字符串中保持字符顺序的一个子集,可以连续也可以不连续。例如给定字符串 atpaaabpabtt,pabt是一个子串,而 pat 就是一个子列。

现给定一个字符串 S 和一个子列 P,本题就请你找到 S 中包含 P 的最短子串。若解不唯一,则输出起点最靠左边的解。

输入格式:
输入在第一行中给出字符串 S,第二行给出 P。S 非空,由不超过 10
4
个小写英文字母组成;P 保证是 S 的一个非空子列。

输出格式:
在一行中输出 S 中包含 P 的最短子串。若解不唯一,则输出起点最靠左边的解。

输入样例:
atpaaabpabttpcat
pat
结尾无空行
输出样例:
pabt
结尾无空行

解题思路

P = str(input())
S = str(input())
# P = str("atpaaabpabttpcat")
# S = str("pat")



def isCunzai(input:str, S:str) -> bool:
    j = 0
    for i in input:
        if i == S[j]:
            j += 1
            if len(S) == j:
                return True
    return False

resList = []
PList = list(P)
left0 = S[0]
right0 = S[-1]
left0List = []
right0List = []
for index,val in enumerate(PList):
    if val == left0:
        left0List.append(index)
    if val == right0:
        right0List.append(index)
minLeng = len(P)
for i in left0List:
    for j in right0List:
        # print(i,j,P[i:j+1])
        length = j +1  - i
        if i<=j and length <= minLeng:
            PtempStr = (P[i:j+1])
            if isCunzai(PtempStr,S) == True:
                resList.append(PtempStr)
                minLeng = len(PtempStr)
                break
# print(resList)
print(min(resList,key= lambda x:len(x)))

相关文章

  • PTA 7-5 子串与子列 (25 分)

    题目 子串是一个字符串中连续的一部分,而子列是字符串中保持字符顺序的一个子集,可以连续也可以不连续。例如给定字符串...

  • PTA 7-5 买地攻略 (25 分)

    题目 数码城市有土地出售。待售的土地被划分成若干块,每一块标有一个价格。这里假设每块土地只有两块相邻的土地,除了开...

  • 本文总结一些常见的子列问题

    问题模型: 给定一连串的数(或子串),问一些关于子列(和,差,公共子串,公共子序列等)的一些问题. (数字的个数在...

  • C语言编程 C Language Programming - 0

    编程题0006 (from Programming Teaching Assistant (PTA)) 最长对称子...

  • BF算法

    思想: 主串S中的子串与模式串T进行比较,直 到找到相同的子串为止。如果存在相同的子串,则匹配成功,返 回子串在主...

  • 七、SQL–子查询③(列子查询)

    列值子查询 与标量子查询不同,列值子查询可以返回一个多行多列的结果集。这样的子查询又被称为表子查询,表子查询可以看...

  • PTA 7-5 实验室使用排期 (25 分)

    题目 受新冠疫情影响,当前大家的活动都必须注意保持充分的社交距离,国家实验室的使用也同样受到了严格的限制。假设规定...

  • 正则表达式

    方法 search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始...

  • 最长公共子串 子序列 最长回文子串 子序列

    最长公共子串 子序列 最长回文子串 子序列 简单易懂的python代码 子串容易输出,子序列比较难(输出str而...

  • LeetCode 第719题:最长重复子数组/(又名:最长公共子

    1、前言 2、思路 子串与子序列的区别在于,子串必须要连续,而子序列不需要连续。子序列的题目很好做,如果两个字符不...

网友评论

    本文标题:PTA 7-5 子串与子列 (25 分)

    本文链接:https://www.haomeiwen.com/subject/yzxnwltx.html