例如abcdeabc 和 eabcabcd
要找出他们的最长公共子串并按照字母序排序
,其中两个串可以是数字。
这里为了写的快就用了普通算法,也可以用最佳算法最大字符串匹配
(虽然比较难理解,但是确实运行快)
普通人的思路:
- 找出某个串的全部子串
- 遍历子串集合,如果另一个串包含这个子串,且长度最长,保存这些子串
- 按字母排序
输入:
abcdeabc eabcabcd
输出:
abcd
eabc
python代码:
string=input()
str1=string.split(" ")[0]
str2=string.split(" ")[1]
len1=len(str1)
len2=len(str2)
#print(len1,len2)
pi_set=[]
for i in range(0,len1+1):
for j in range(i,len1+1):
if str1[i:j]!='':
pi_set.append(str1[i:j])
# print(pi_set)
max_len=0
result=[]
for pi in pi_set:
if(pi in str2 and len(pi)>max_len):
#print(result)
result.clear()
result.append(pi)
max_len=len(pi)
continue
if(pi in str2 and len(pi)==max_len):
#print(result)
result.append(pi)
#print(result)
result.sort()
for re in result:
print(re)