条件匹配皆可用堆栈知识解决
import re
def stack_count(s1,s2):
if len(s1) > len(s2):
s1,s2 = s2,s1
stack=[]
max_list=[] #栈弹出后用list记录下弹出的长度,最后用max(list)来获取最大公共字符串
for i in range(len(s1)):
stack.append(s1[i])
for j in s1[i+1:]:
stack.append(j)
if not re.search("".join(stack),s2) : #注意:不能用表达式==none来判断,必须if not
max_list.append(len(stack)-1)
stack=[]
max_list.append(len(stack))
if len(stack)==len(s1):
print(len(s1))
return True #优化,如果从第一个字母开始遍历stack最大的值等于s1那必然最大值
else:
stack=[]
print(max(max_list))
return True
while True:
try:
s1,s2 = input(),input()
if len(s1) > len(s2):
s1,s2 = s2,s1
stack_count(s1,s2)
except:
break