Le plus long substrice commune python

Le plus long substrice commune python
Le problème est de trouver la plus longue sous-chaîne commune dans une chaîne donnée. La tâche consiste à prendre deux chaînes et à trouver la plus longue sous-chaîne commune avec ou sans caractères répétitifs. En d'autres termes, correspondre à la plus longue sous-chaîne commune donnée dans le même ordre et présent dans les deux chaînes. Par exemple, «Tech» est une séquence de caractères donnés dans «NextTech», qui est également la sous-chaîne.

Le processus pour trouver la plus longue sous-séquence commune:

Le processus simple pour trouver la plus longue sous-séquence commune consiste à vérifier chaque caractère de la chaîne 1 et à trouver la même séquence dans la chaîne 2 en vérifiant chaque caractère de la chaîne 2 un par un pour voir si une sous-chaîne est courante dans les deux chaînes. Par exemple, disons que nous avons une chaîne 1 'ST1' et une chaîne 2 'ST2' avec les longueurs A et B, respectivement. Vérifiez toutes les sous-chaînes de «ST1» et commencez à itération de «ST2» pour vérifier si une sous-chaîne de «ST1» existe comme «ST2». Commencez par faire correspondre la sous-chaîne de la longueur 2 et augmentant la longueur de 1 dans chaque itération, atteignant la longueur maximale des cordes.

Exemple 1:

Cet exemple consiste à trouver la plus longue sous-chaîne commune avec des caractères répétitifs. Python fournit des méthodes intégrées simples pour remplir toutes les fonctions. Dans l'exemple ci-dessous, nous avons fourni le moyen le plus simple de trouver la plus longue subséquence commune en 2 cordes. La combinaison des boucles «for» et «while» est utilisée pour obtenir la plus longue sous-chaîne commune dans une chaîne. Jetez un œil à l'exemple ci-dessous:

Def LongcomSubs (ST1, ST2):
ANS = 0;
pour une gamme (len (ST1)):
pour B dans la gamme (LEN (ST2)):
k = 0;
tandis que ((a + k) < len(st1) and (b + k) < len(st2)
et st1 [a + k] == st2 [b + k]):
k = k + 1;
ANS = max (Ans, K);
retourner Ans;
Si __name__ == '__MAIN__':
A = 'abbaab'
B = 'babaab'
i = len (a)
j = len (b)
Print («La sous-chaîne commune la plus longue dans une chaîne est», longcomsubs (a, b))

La sortie suivante sera produite après avoir exécuté le code ci-dessus. Il trouvera le plus long substrice commun et vous donnera en tant que sortie.

Exemple 2:

Une autre façon de trouver la plus longue sous-chaîne commune est de suivre l'approche itérative. Une boucle «pour» est utilisée pour l'itération, et une condition «si» correspond à la sous-chaîne commune.

def Longcomsubs (A, B, M, N):
maxlen = 0
endindex = m
Trouver = [[0 pour x dans la plage (n + 1)] pour y dans la plage (m + 1)]
pour i à portée (1, m + 1):
pour j à portée (1, n + 1):
Si a [i - 1] == b [j - 1]:
Trouver [i] [j] = trouver [i - 1] [j - 1] + 1
Si trouver [i] [j]> maxlen:
maxlen = trouver [i] [j]
endindex = i
return x [endIndex - maxlen: endIndex]
Si __Name__ == '__MAIN__':
A = 'abbaab'
B = 'babaab'
i = len (a)
j = len (b)
print («La sous-chaîne commune la plus longue dans une chaîne est», longcomsubs (a, b, i, j)))

Exécutez le code ci-dessus dans n'importe quel interprète Python pour obtenir la sortie souhaitée. Cependant, nous avons utilisé l'outil Spyder pour exécuter le programme pour trouver la plus longue sous-chaîne commune dans une chaîne. Voici la sortie du code ci-dessus:

Exemple 3:

Voici un autre exemple pour vous aider à trouver la plus longue sous-chaîne commune dans une chaîne en utilisant le codage Python. Cette méthode est le moyen le plus petit, le plus simple et le plus simple de trouver la plus longue subséquence commune. Jetez un œil à l'exemple de code ci-dessous:

Def Common (ST1, ST2):
def _iter ():
Pour A, B dans Zip (ST1, ST2):
Si a == b:
céder un
autre:
retour
retour ".join (_iter ())
Si __Name__ == '__MAIN__':
A = 'abbaab'
B = 'babaab'
Print («La sous-chaîne commune la plus longue dans une chaîne est», longcomsubs (a, b))

Ci-dessous, vous pouvez trouver la sortie du code ci-dessus

En utilisant cette méthode, nous n'avons pas renvoyé la sous-chaîne commune mais la durée de cette sous-chaîne commune. Pour vous aider à obtenir le résultat souhaité, nous avons montré à la fois des sorties et des méthodes pour obtenir ces résultats.

La complexité temporelle et la complexité de l'espace pour trouver la plus longue sous-chaîne commune

Il y a un coût à payer pour effectuer ou exécuter n'importe quelle fonction; La complexité du temps est l'un de ces coûts. La complexité temporelle de toute fonction est calculée en analysant le temps qu'une instruction peut prendre pour exécuter. Par conséquent, pour trouver toutes les sous-chaînes dans «ST1», nous avons besoin de O (a ^ 2), où «A» est la longueur de «ST1» et «O» est le symbole de la complexité temporelle. Cependant, la complexité temporelle de l'itération et la découverte de savoir si la sous-chaîne existe dans «ST2» ou non est O (m), où «m» est la longueur de «ST2». Ainsi, la complexité de temps totale de la découverte de la sous-chaîne commune la plus longue en deux cordes est O (a ^ 2 * m). De plus, la complexité de l'espace est un autre coût de l'exécution d'un programme. La complexité de l'espace représente l'espace qu'un programme ou une fonction conservera dans la mémoire pendant l'exécution. Par conséquent, la complexité de l'espace de trouver la plus longue sous-séquence commune est O (1), car elle ne nécessite aucun espace pour exécuter.

Conclusion:

Dans cet article, nous avons appris les méthodes pour trouver la plus longue sous-chaîne commune dans une chaîne en utilisant la programmation Python. Nous avons fourni trois exemples simples et faciles pour obtenir la plus longue sous-chaîne commune de Python. Le premier exemple utilise la combinaison de «pour» et «While Loop. Alors que dans le deuxième exemple, nous avons suivi l'approche itérative en utilisant la logique «For» et «If». Au contraire, dans le troisième exemple, nous avons simplement utilisé la fonction intégrée Python pour obtenir la longueur de la sous-chaîne commune dans une chaîne. En revanche, la complexité temporelle de la recherche de la sous-chaîne commune la plus longue dans une chaîne utilisant Python est O (a ^ 2 * m), où A et Ma sont la longueur des deux chaînes; String 1 et String 2, respectivement.