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

地址:https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506?tpId=37&&tqId=21288&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking

 

 1 '''
 2 描述
 3 查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
 4 注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开!
 5 
 6 本题含有多组输入数据!
 7 输入描述:
 8 输入两个字符串
 9 
10 输出描述:
11 返回重复出现的字符
12 示例1
13 输入:
14 abcdefghijklmnop
15 abcsafjklmnopqrstuvw
16 输出:
17 jklmnop
18 
19 '''
20 
21 while(True):
22     try:str1 = input()
23     except:break
24 
25     str2 = input()
26     newStr = ''
27     resStr=''
28     resStrShort = str1 if len(str1) <= len(str2) else str2
29     for i in range(len(str1)):
30         newStr = str1[i:]
31         for j in range(len(newStr)):
32             newStr1 = newStr[:len(newStr)-j]
33             if newStr1 in str2:
34 
35                 if len(resStr) > len(newStr1) or (len(resStr) == len(newStr1) and resStrShort.index(resStr) < resStrShort.index(newStr1)):
36                     resStr = resStr
37                 else:
38                     resStr = newStr1
39     print(resStr)

 

posted @ 2021-06-01 23:58  菜小鱼~  阅读(988)  评论(0编辑  收藏  举报