题解 | #查找两个字符串a,b中的最长公共子串#

查找两个字符串a,b中的最长公共子串

https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506

"""
1、通读题目,全局理解。精读题目,找到解题思路
找到2个字符串中的最长公共字串,如果有多个,输出短串先出现的那个

找到2个字符串中所有的公共字串,
找到短串,
遍历短字符串

当第一个等于a的时候,
a有没有在长串中
ab有没有在长串中
abc有没有在长串中
一直到最后一个

在长字符串中,将 a 和 其长度1 ,放入字典中。如果字典中有a,就不用放入,没有则放入

当第二个等于b的时候,
b
bc
bcd
bcde
将字符串和长度,都放入字典中

max 找到长度最大那个values

当字典中的values = max的时候,将内容放到列表中,取第一个即可


2、找到思路的代码实现方式
debug的点:zifu = duan[i:j+1] 这里刚开始我写成了i+1,导致只有18个用例通过,本地debug后,直接就看出来了,很简单,主要是梳理思路


"""
s1 = input()
s2 = input()

# 找到短串\长串
a = min(len(s1), len(s2))
duan = ""
if len(s1) == a:
    duan = s1
else:
    duan = s2

b = max(len(s1), len(s2))
chang = ""
if len(s1) == b:
    chang = s1
else:
    chang = s2

# 遍历短串
dic = {}
for i in range(len(duan)):
    for j in range(i, len(duan)):
        zifu = duan[i:j+1]
        if zifu in chang:
            if zifu not in dic:
                dic[zifu] = len(zifu)

# 当字典中的values = max的时候,将内容放到列表中,取第一个即可
c = max(dic.values())
d = []
for k,v in dic.items():
    if v == c:
        d.append(k)
print(d[0])

#题解#
全部评论

相关推荐

序 朋友们,好久不见。 笔者在过去消失的五个月里被困在情绪牢笼中过的相当煎熬,一度丢失自己,觉得整个世界都是昏暗的。 庆幸的是靠着自己纯硬扛也是走出来了。表达欲再度回归,所以真的很开心还有机会能在再和大家见面。 破碎秋招 抑郁情绪的引爆点必然是秋招期间遭受的打击了,从去年九月份腾讯转正被告知失败之后就开始疯狂投递简历,每天都在经历:简历挂、一面挂、二面挂、三面挂、HR面挂,每天睁开眼就被无所适从的挫败感包围。 秋招的特点是即便流程走到最后一步也不一定会 offer,因为还需要进入大池子进行横向对比,俗称泡池子,而这一泡我的大多数面试流程到后面就没了后文,这一度让我感觉非常绝望。我深知自己学历并...
SoNiC_X:我已经工作快2年了,当时高考没考好没去到想去的学校,觉得天要塌了;校招找不到工作,觉得天要塌了;现在工作觉得看不到未来,觉得天要塌了;最近最大的感悟就是:天会一直塌,但是生活也会一直继续下去,还是要调整好自己的心态,不要因为一时的困难把自己困住,要记住完蛋的日子永远在后头
点赞 评论 收藏
分享
无一技之长怎么办:别去右边,售前,实施,需求分析一起,这是把人当牛马用啊,快跑,这些岗位天花板很低的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务