ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 最长公共字符串后缀【简单易懂,代码可以直接运行】

2022-01-16 21:03:19  阅读:183  来源: 互联网

标签:min python res len 后缀 flag 字符串 易懂


python 最长公共字符串后缀【简单易懂,代码可以直接运行】

给出若干个字符串,输出这些字符串的最长公共后缀。

输入格式
由若干组输入组成。

每组输入的第一行是一个整数 N。

N 为 0 时表示输入结束,否则后面会继续有 N 行输入,每行是一个字符串(字符串内不含空白符)。

每个字符串的长度不超过 200。

输出格式
共一行,为 N 个字符串的最长公共后缀(可能为空)。
在这里插入图片描述
在这里插入图片描述
怎么考虑这个题呢?首先这是一个字符串匹配问题,找最长后缀,所以我们需要从后往前找
这个题的难点
一输入问题:如何输入字符串进行循环比较:这里面用的是while(cin>>n,n)来判断什么时候结束,并设置一个字符串数组,来进行字符串的比较
这里面用到了第一个for循环,第一个for循环的目的是找到你输入的字符串长度的最小值,并且把它设置为len,作为第一次比较的长度
有同学可能会考虑,如果比较之后没有公共后缀怎么办,其实没有相同字符,空格就是公共后缀,会输出空格
二匹配问题,这里面我用到两个for循环和两个flag(标记,因为flag有旗帜的意思,很想标记所以就这样称呼)第一个for循环用来一次遍历该字符数组中存入的所有字符串,第二个字符串用来遍历需要比较的字符串的字符
这个里面是以s[0]为标杆进行比较的,大家可以想一下如果每个字符串都与第1个字符串有相同的后缀,那么这个后缀是他们所有字符串的公共后缀,以此来找到我们要找的公共后缀!
这里面设置了两个flag,第一个success用来标记整体的匹配是否成功,即s[0]与s[1],s[2]等等的整体比较,如果说s[1]都不满足那么s[2]都不会参与比较,s[1]匹配失败则is_name标记true -> false;当此轮匹配结束后,sucess也会变为false执行len–,缩小范围再次进行匹配比较。成功则推出比较循环并输出公共后缀!

这里用到了大量的切片

代码如下:

N = eval(input())
res = ''
flag = 1
while N != 0:
    s = []
    for i in range(0,N):
        s.append(input())
    min = len(s[0])
    res = s[0]
    for i in s:
        if len(i) < min:
            min = len(i)
            res = i
            pass
        pass
    for i in range(0,min):
        flag = 1
        res_new = res[i:min + 1]
        # print(res_new)
        for item in s:
            if res_new != item[len(item) - min + i:len(item)]:
                flag = 0
                break
        if flag == 1:
            print(res_new)
            break
    if flag == 0:
        print()
    N = eval(input())

标签:min,python,res,len,后缀,flag,字符串,易懂
来源: https://blog.csdn.net/weixin_45527999/article/details/122528690

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有