前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python编程经典案例【考题】两个字符串中最长子串

Python编程经典案例【考题】两个字符串中最长子串

作者头像
阿黎逸阳
发布2022-11-11 14:28:54
2700
发布2022-11-11 14:28:54
举报
文章被收录于专栏:阿黎逸阳的代码

本文和你一起探索Python编程经典案例,让你沉浸式学习Python。

你可以拿着题目先思考,然后再对照本文解题方法进行比较。有不同的见解欢迎到公众号中跟我一起探讨。

本文目录

  1. 经典案例【考题】
  2. 经典案例解题方法

一、经典案例【考题】

代码语言:javascript
复制
问题:找出两个字符串中的最长子串(含标点符号)。
代码语言:javascript
复制
输入:

str1 = '尊敬的客户谢子凡,您好!您的企业金条明天马上要逾期,烦请尽快登录企宝查进行还款。'

str2 = '尊敬的客户李浩,您好!您的企业金条明天马上要逾期,烦请尽快登录企信宝进行还款。'

代码语言:javascript
复制
输出:
代码语言:javascript
复制
(25, ',您好!您的企业金条明天马上要逾期,烦请尽快登录企')
代码语言:javascript
复制
其中25为最长子串的长度,“,您好!您的企业金条明天马上要逾期,烦请尽快登录企”为最长子串的内容。

二、经典案例解题方法

上述案例整体解题思路为:

  • 应用for循环对其中的一个字符串按顺序依次切割出子字符串。
  • 应用find函数查找另一个字符串中是否含有子字符串,若含有则将该子字符串的长度和最长子串的长度进行比较,若更长则更新最长子串。

具体代码如下:

代码语言:javascript
复制
def max_sub_str(str1, str2):
    '''
    str1:字符串1
    str2:字符串2
    '''
    max_i = -1
    max_j = -1
    max_len = -1
    for i in range(len(str1)):
        for j in range(len(str1)):
            if j>=i:
                if str2.find(str1[i:j+1])>=0:
                    if len(str1[i:j+1]) > max_len:
                        max_len = len(str1[i:j+1])
                        max_i = i
                        max_j = j
    print(max_len)
    print(max_i+1)
    print(max_j+1)
    sub_str = str1[max_i: max_j+1]
    return max_len, sub_str

str1 = '尊敬的客户,您好!您的企业金条明天马上要逾期,烦请尽快登录企宝查进行还款。'
str2 = '逾期。'
max_sub_str(str1, str2)

str1.find(sub_str):在str1中查找sub_str,若存在则返回第一次出现sub_str首字对应的下标,否则返回-1。

得到结果:

代码语言:javascript
复制
(2, '逾期')
代码语言:javascript
复制
其中2为最长子串的长度,“逾期”为最长子串的内容。

但是该方法也会存在一个问题,如果两个字符串中有长度相同但内容不同的最长子串,只会输出第一个最长子串。

例:两个字符串最长子串长度为2,但是有“学习”和“天天”两个相同子串,运行上述代码只得到其中一个最长子串的内容。

代码语言:javascript
复制
str1 = '好好学习,天天向上。'
str2 = '如果你能学习好数学,并能天天按时完成作业,我暑假奖励你去旅游'
max_sub_str(str1, str2)

得到结果:

代码语言:javascript
复制
(2, '学习')
代码语言:javascript
复制
并未输出最长子串“天天”,感兴趣的朋友可以挑战一下调整代码,实现所有最长子串的输出。

至此,Python中的编程经典案例【考题】两个字符串中最长子串已讲解完毕。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档