题目描述
查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开!
本题含有多组输入数据!
输入描述:
输入两个字符串
输出描述:
返回重复出现的字符
示例1
输入
abcdefghijklmnop
abcsafjklmnopqrstuvw
输出
jklmnop
代码实现:
import re
def func():
while True:
try:
str_min = input()
str_max = input()
if len(str_min)>len(str_max):
str_max,str_min = str_min,str_max
len1 = len(str_min)
same_value = ''
length = 1
for i in range(len1-length+1):
for j in range(len1-length+1):
str_value = str_min[j:j+length]
#print("str_value:",str_value)
if str_value in str_max:
if len(str_value) > len(same_value):
same_value = str_value
length = length+1
print(same_value)
except Exception as e:
#print(e)
break
if __name__ =='__main__':
func()
实现2:
import re
def func():
while True:
try:
str1=input()
str2=input()
n = 0
s = ''
if len(str1)>len(str2):
str1,str2 = str2, str1
for i in range(len(str1)+1):
if str1[i-n:i] in str2:
s = str1[i-n:i]
#print(s)
n +=1
print(s)
except:
break
if __name__ =='__main__':
func()