>  기사  >  백엔드 개발  >  Python은 주어진 문자열에 대해 가장 길고 반복되지 않는 부분 문자열 찾기를 구현합니다.

Python은 주어진 문자열에 대해 가장 길고 반복되지 않는 부분 문자열 찾기를 구현합니다.

不言
不言원래의
2018-04-21 14:20:462269검색

이 글에서는 주로 주어진 문자열에 대해 가장 길고 반복되지 않는 부분 문자열을 찾는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.