이 글에서는 주로 주어진 문자열에 대해 가장 길고 반복되지 않는 부분 문자열을 찾는 Python의 방법을 소개합니다. 여기에는 Python의 문자열 탐색, 정렬, 계산 및 기타 관련 연산 기술이 포함됩니다. 도움이 필요한 친구는 이 글의 예를 참조할 수 있습니다. Python이 주어진 문자열에 대해 가장 길고 반복되지 않는 부분 문자열을 찾는 방법을 구현합니다. 참고를 위해 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
질문: 주어진 문자열에서 문자열이 "aaaaaaaaaaaaa"와 같이 단일 문자로 구성된 경우 가장 긴 반복 하위 시퀀스를 찾습니다. " 그러면 요구 사항이 충족됩니다. 이전 플래그가 겹칠 때의 출력으로 돌아가서 새 하위 문자열이 이전 문자열 또는 이전 문자열의 하위 문자열과 동일한지 확인합니다. 동일하면 하위 문자열을 기록하고 다음으로 계산합니다. 1 처리가 완료될 때까지
(2) 활용 슬라이딩 윈도우 슬라이싱 메커니즘은 모든 슬라이스를 생성한 후 이를 계산하고 처리하는 방식으로 주로 이중 정렬 기능을 사용합니다. 구현:
#!usr/bin/env python
#encoding:utf-8
'''''
__Author__:沂水寒城
功能:给定一个字符串,寻找最长重复子串
'''
from collections import Counter
def slice_window(one_str,w=1):
'''''
滑窗函数
'''
res_list=[]
for i in range(0,len(one_str)-w+1):
res_list.append(one_str[i:i+w])
return res_list
def main_func(one_str):
'''''
主函数
'''
all_sub=[]
for i in range(1,len(one_str)):
all_sub+=slice_window(one_str,i)
res_dict={}
#print Counter(all_sub)
threshold=Counter(all_sub).most_common(1)[0][1]
slice_w=Counter(all_sub).most_common(1)[0][0]
for one in all_sub:
if one in res_dict:
res_dict[one]+=1
else:
res_dict[one]=1
sorted_list=sorted(res_dict.items(), key=lambda e:e[1], reverse=True)
tmp_list=[one for one in sorted_list if one[1]>=threshold]
tmp_list.sort(lambda x,y:cmp(len(x[0]),len(y[0])),reverse=True)
#print tmp_list
print tmp_list[0][0]
if __name__ == '__main__':
print "脚本之家测试结果:"
one_str='abcabcd'
two_str='abcabcabd'
three_str='bbbbbbb'
main_func(one_str)
main_func(two_str)
main_func(three_str)
결과 다음과 같습니다:
관련 권장 사항:
Python은 지정된 요구 사항에 따라 숫자를 역순으로 출력하는 것을 구현합니다
python은 다음과 같은 메소드를 구현합니다. IDLE
에 여러 줄 입력하기
위 내용은 Python은 주어진 문자열에 대해 가장 길고 반복되지 않는 부분 문자열 찾기를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!