Längste häufige Substring -Python

Längste häufige Substring -Python
Das Problem ist, das längste gemeinsame Substring in einer bestimmten Zeichenfolge zu finden. Die Aufgabe besteht darin, zwei Saiten zu nehmen und das längste gemeinsame Substring mit oder ohne sich wiederholende Zeichen zu finden. Mit anderen Worten, übereinstimmen dem längsten gemeinsamen Substring in derselben Reihenfolge und in beiden Saiten vorhanden. Zum Beispiel ist 'Tech' eine Folge von Zeichen, die in 'NextTech' angegeben sind, was auch das Substring ist.

Der Prozess, um die längste gemeinsame Subsequenz zu finden:

Der einfache Prozess, um die längste gemeinsame Subsequenz zu finden. Nehmen wir zum Beispiel an, wir haben eine Zeichenfolge 1 'ST1' und Zeichenfolge 2 'ST2' mit den Längen A bzw. B. Überprüfen Sie alle Substrings von 'ST1' und beginnen Sie mit dem Iterieren von 'ST2', um zu prüfen, ob eine Substring von 'ST1' als 'ST2' vorhanden ist. Beginnen Sie mit der Übereinstimmung der Substring von Länge 2 und erhöhen Sie die Länge in jeder Iteration um 1, wobei Sie auf die maximale Länge der Saiten steigen.

Beispiel 1:

In diesem Beispiel geht es darum, das längste gemeinsame Substring mit sich wiederholenden Zeichen zu finden. Python bietet einfache integrierte Methoden, um Funktionen auszuführen. Im folgenden Beispiel haben wir den einfachsten Weg gegeben, um die längste gemeinsame Subsequenz in 2 Strings zu finden. Kombinieren Sie das "für" und ", während" Loops "verwendet werden, um das längste gemeinsame Substring in einer Zeichenfolge zu erhalten. Schauen Sie sich das unten angegebene Beispiel an:

Def Longcomsubs (ST1, ST2):
Ans = 0;
für eine Reichweite (Len (ST1)):
für B in Reichweite (Len (ST2)):
K = 0;
während ((a + k) < len(st1) and (b + k) < len(st2)
und st1 [a + k] == ST2 [B + K]):
K = K + 1;
Ans = max (Ans, k);
Rückkehr Ans;
Wenn __name__ == '__main__':
A = 'Abbaab'
B = 'Babaab'
i = len (a)
j = len (b)
print ('Das längste gemeinsame Substring in einer Zeichenfolge ist', Longcomsubs (a, b))

Die folgende Ausgabe wird erstellt, nachdem der obige Code ausgeführt wurde. Es wird das längste gemeinsame Substring finden und Ihnen als Ausgabe liefern.

Beispiel 2:

Eine andere Möglichkeit, das längste gemeinsame Substring zu finden, besteht darin, dem iterativen Ansatz zu folgen. Eine 'für' Schleife wird für die Iteration verwendet, und ein "If" -Zustand entspricht dem gemeinsamen Substring.

Def Longcomsubs (A, B, M, N):
maxlen = 0
EndIndex = m
Find = [0 für x im Bereich (n + 1)] für y in Bereich (m + 1)]
für i im Bereich (1, m + 1):
für J in Reichweite (1, N + 1):
Wenn a [i - 1] == b [j - 1]:
Finde [i] [j] = finde [i - 1] [j - 1] + 1
Wenn Sie [i] [j]> Maxlen finden:
maxlen = finde [i] [j]
endindex = i
return x [endindex - maxlen: endindex]
Wenn __name__ == '__main__':
A = 'Abbaab'
B = 'Babaab'
i = len (a)
j = len (b)
print ('das längste gemeinsame Substring in einer Zeichenfolge ist', Longcomsubs (a, b, i, j))

Führen Sie den obigen Code in einem Python -Interpreter aus, um die gewünschte Ausgabe zu erhalten. Wir haben jedoch das Spyder -Tool verwendet, um das Programm auszuführen, um das längste gemeinsame Substring in einer Zeichenfolge zu finden. Hier ist die Ausgabe des obigen Code:

Beispiel 3:

Hier ist ein weiteres Beispiel, mit dem Sie das längste gemeinsame Substring in einer Zeichenfolge mithilfe der Python -Codierung finden können. Diese Methode ist die kleinste, einfachste und einfachste Möglichkeit, die längste gemeinsame Subsequenz zu finden. Schauen Sie sich den unten angegebenen Beispielcode an:

Def Common (ST1, ST2):
def _iter ():
für a, b in ZIP (ST1, ST2):
Wenn a == b:
Ausbeute a
anders:
zurückkehren
zurückkehren ".join (_iter ())
Wenn __name__ == '__main__':
A = 'Abbaab'
B = 'Babaab'
print ('Das längste gemeinsame Substring in einer Zeichenfolge ist', Longcomsubs (a, b))

Im Folgenden finden Sie die Ausgabe des oben angegebenen Code

Mit dieser Methode haben wir das gemeinsame Substring nicht zurückgegeben, sondern die Länge dieses gemeinsamen Substrings. Um das gewünschte Ergebnis zu erzielen, haben wir sowohl Ausgänge als auch Methoden gezeigt, um diese Ergebnisse zu erzielen.

Die zeitliche Komplexität und die Raumkomplexität für die Suche nach dem längsten gemeinsamen Substring

Es gibt einige Kosten für die Ausführung oder Ausführung einer Funktion. Zeitkomplexität ist eine dieser Kosten. Die Zeitkomplexität jeder Funktion wird berechnet, indem analysiert wird, wie viel Zeit eine Aussage für die Ausführung benötigen kann. Daher brauchen wir O (a^2), wobei 'a' die Länge von 'ST1' und 'O' das Symbol der Zeitkomplexität ist. Die zeitliche Komplexität der Iteration und der Feststellung, ob das Substring in 'ST2' vorhanden ist oder nicht, ist o (m), wobei 'M' die Länge von 'ST2' ist. Die Gesamtzeitkomplexität der Entdeckung des längsten gemeinsamen Substrings in zwei Saiten ist O (a^2*m). Darüber hinaus sind die Raumkomplexität ein weiterer Kosten für die Ausführung eines Programms. Die Raumkomplexität repräsentiert den Raum, das ein Programm oder eine Funktion während der Ausführung im Speicher halten. Daher ist die Raumkomplexität, die längste gemeinsame Subsequenz zu finden.

Abschluss:

In diesem Artikel haben wir über die Methoden gelernt, um das längste gemeinsame Substring in einer Zeichenfolge mithilfe der Python -Programmierung zu finden. Wir haben drei einfache und einfache Beispiele geliefert, um das längste gemeinsame Substring in Python zu erhalten. Das erste Beispiel verwendet die Kombination von 'for' und 'während der Schleife. Während wir im zweiten Beispiel den iterativen Ansatz befolgt haben, indem wir die Logik für 'Loop und' if 'verwenden. Im Gegenteil, im dritten Beispiel haben wir einfach die Python-integrierte Funktion verwendet, um die Länge des gemeinsamen Substrings in einer Schnur zu erhalten. Im Gegensatz dazu ist die zeitliche Komplexität, das längste gemeinsame Substring in einer Schnur unter Verwendung von Python zu finden, o (a^2*m), wobei a und ma die Länge der beiden Saiten sind; Zeichenfolge 1 bzw. String 2.