Heim Backend-Entwicklung Python-Tutorial Python implementiert die Suche nach der längsten sich nicht wiederholenden Teilzeichenfolge für eine bestimmte Zeichenfolge

Python implementiert die Suche nach der längsten sich nicht wiederholenden Teilzeichenfolge für eine bestimmte Zeichenfolge

Apr 21, 2018 pm 02:20 PM
python 字符串 给定

In diesem Artikel wird hauptsächlich Pythons Methode zum Finden des längsten sich nicht wiederholenden Teilstrings für einen bestimmten String vorgestellt, einschließlich Pythons Durchlauf-, Sortier-, Berechnungs- und anderen verwandten Operationsfähigkeiten für Strings. Freunde in Not können sich darauf beziehen.

Das Beispiel in diesem Artikel beschreibt die Methode zum Finden des längsten sich nicht wiederholenden Teilstrings für einen bestimmten String in Python. Geben Sie es wie folgt als Referenz an alle weiter:

Frage:

Suchen Sie bei einer gegebenen Zeichenfolge die längste sich wiederholende Teilsequenz darin, wenn Besteht die Zeichenfolge aus einem einzelnen Zeichen, z. B. „aaaaaaaaaaaaa“, dann ist die Ausgabe, die die Anforderungen erfüllt, eine

Idee:

Die Idee hier ist: Die beiden fallen mir ein

(1) Durchlaufen Sie die Zeichenfolge von Anfang an, setzen Sie das Flag-Bit und stellen Sie fest, dass es mit dem vorherigen Flag-Bit übereinstimmt Gehen Sie zurück, gehen Sie zurück und prüfen Sie, ob die Teilzeichenfolge mit der vorherigen Zeichenfolge oder der Teilzeichenfolge der vorherigen Zeichenfolge identisch ist. Wenn sie identisch ist, wird die Teilzeichenfolge aufgezeichnet und die Anzahl um 1 erhöht, bis die Verarbeitung abgeschlossen ist abgeschlossen

(2) Verwenden Sie den Schiebefenster-Slice-Mechanismus, um alle Slices zu generieren. Als Nächstes verwenden Statistiken und Verarbeitung hauptsächlich die Funktion der doppelten Sortierung.

Dieser Artikel verwendet die zweite Methode. Das Folgende ist die spezifische Umsetzung:


#!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)
Nach dem Login kopieren


Die Ergebnisse sind wie folgt:


Verwandte Empfehlungen:

Python implementiert die Methode zur Ausgabe einer Zahl in umgekehrter Reihenfolge gemäß den angegebenen Anforderungen

Python implementiert die Methode der Eingabe mehrerer Zeilen in IDLE


Das obige ist der detaillierte Inhalt vonPython implementiert die Suche nach der längsten sich nicht wiederholenden Teilzeichenfolge für eine bestimmte Zeichenfolge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So laden Sie Deepseek Xiaomi herunter So laden Sie Deepseek Xiaomi herunter Feb 19, 2025 pm 05:27 PM

So laden Sie Deepseek Xiaomi herunter

Was sind die Vor- und Nachteile des Templatings? Was sind die Vor- und Nachteile des Templatings? May 08, 2024 pm 03:51 PM

Was sind die Vor- und Nachteile des Templatings?

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Jul 01, 2024 am 07:22 AM

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern May 06, 2024 pm 03:52 PM

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen May 06, 2024 pm 02:00 PM

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks May 06, 2024 pm 04:43 PM

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks

Wie fragst du ihn Deepseek? Wie fragst du ihn Deepseek? Feb 19, 2025 pm 04:42 PM

Wie fragst du ihn Deepseek?

Welche Software ist NET40? Welche Software ist NET40? May 10, 2024 am 01:12 AM

Welche Software ist NET40?

See all articles