Python —— 查询两个字符串的最长公共子串
查询两个字符串的最长公共子串
查询两个字符串的最长公共子串
思路:
1、通过字符串1从全长开始判断是否存在于字符串2中,如果不存在则迭代至只有1位字符
2、通过列表来保存结果,以免出现有多个同长的最长子串情况
3、选择长度短的字符串作为操作字符串,以提升效率
def getLongestSameStr(str1, str2):
# 判断两个字符串长短,取短的那个进行操作
if len(str1) > len(str2):
str1, str2 = str2, str1
# 用列表来接收最终的结果,以免出现同时有多个相同长度子串被漏查的情况
resList = []
# 从str1全长开始进行检测,逐渐检测到只有1位
for i in range(len(str1), 0, -1):
# 全长情况下不对切片进行遍历
if i == len(str1):
if str1 in str2:
resList.append(str1)
# 非全长情况下,对str1进行切片由0到当前检测长度,迭代到str1的最后
else:
j = 0
while i < len(str1):
testStr = str1[j:i]
if testStr in str2:
resList.append(testStr)
i += 1
j += 1
# 判断当前长度下,是否存在子串
if len(resList) > 0:
return resList
return resList
str1 = 'abcedefg'
str2 = 'defabcd'
print(getLongestSameStr(str1, str2))