a = input()
b = input()
def longestSubstringFinder(string1, string2):
answer = ""
len1, len2 = len(string1), len(string2)
for i in range(len1):
match = ""
for j in range(len2):
if (i + j < len1 and string1[i + j] == string2[j]):
match += string2[j]
else:
if (len(match) > len(answer)): answer = match
match = ""
if answer == '':
return 'No overlapping'
else:
return answer
print(longestSubstringFinder(a, b))
在上面的代码中,未获得输入正确错误的预期结果
我的输出:e预期输出:无重叠
3条答案
按热度按时间mitkmikd1#
一些问题:
else
块不应允许内部循环继续:当出现不匹配时,您不应该尝试使用j
的更高值进行匹配,而应该退出该循环并尝试使用i
的下一个值。因此,else
块中需要有break
len(match) > len(answer)
不足以确定解决方案。进入else
块的原因可能是字符不匹配,因此在这种情况下,您不应该更新answer
。answer
的更新不会发生,也就是说,当所有被比较的字符都相等并且i + j < len1
总是true时,这种情况会发生在第二个输入字符串是第一个字符串的后缀时,所以你必须在其他地方更新answer
,所以你也会捕捉到这种情况。以下是对代码的更正,用于处理这些问题:
通过使用字符串切片,并比较这些切片而不是单个字符,可以使代码更短、运行更快。
tzdcorbm2#
使用RegEX,你可以用更少的代码行来完成它。我假设你是Python的初学者。如果你是,那么请学习这种类型代码的RegEX和列表理解。
lpwwtiir3#