학교 공부를 위해 파이썬을 배웁니다. 기본적으로 here과 같이 문자열 목록에서 가장 긴 반복 부분 문자열을 찾아야합니다. 나는 this article을 통해 독서를하고 내가해야 할 일에 대해 이해하고 있습니다.가장 길게 반복되는 하위 문자열
def long_rptr_subString(testList):
longSubstring = ''
if len(testList) > 1 and len(testList[0]) > 0:
for i in range(len(testList[0])):
for j in range(len(testList[0])-i+1):
if j > len(longSubstring) and all(testList[0][i:i+j] in x for x in testList):
longSubstring = testList[0][i:i+j]
return longSubstring
을 지금은 이제 ['slide', 'glidb', 'flidt', 'cridz', 'bidr']
나는 내 긴 문자열 인 것으로 'id'
의 정확한 결과를 얻을 가정 해 봅시다 내 함수를 호출 할 때 다음과 같이
지금까지 내 구현입니다.
그러나 목록을 전달할 때 ['slide', 'glidb', 'flidt', 'cridz', 'bidr', 'balh', 'tejka', 'djakljskdl', 'blah', 'blah', 'blah']
결과가 반환되지 않습니다. 내가 내 가장 긴 부분 문자열로 'blah'
돌아올 수 있어야하지만, 나는 이것을 달성하는 방법을 찾지 못했습니다. 하위 문자열이 목록의 모든 항목에있을 때만 부분 문자열을 일치시킬 수있는 것 같습니다. 한 번 이상 발생하는 가장 긴 하위 문자열을 얻으려면 코드/논리를 어떻게 수정해야합니까?
감사합니다. 당신이 그 변화하더라도
all(testList[0][i:i+j] in x for x in testList)
, 당신은 단지 처음 문자열에있는 가장 긴 문자열을 찾을 수 있기 때문에, : 그 정확히 당신이 무엇을 물어 때문에