Comparer deux chaînes caractère par caractère en Python

Vaibhav Vaibhav 22 janvier 2022
Comparer deux chaînes caractère par caractère en Python

Python est un langage à usage général qui permet de travailler avec des données de type entier, de type chaîne, de type flottant, de type double, etc., une tâche relativement transparente avec sa syntaxe facile à comprendre et ses API robustes fonctionnant en coulisses.

Cet article parlera d’une telle tâche qui implique des chaînes. Et la tâche consiste à comparer deux chaînes, caractère par caractère, en utilisant Python.

Comparer les chaînes caractère par caractère en Python

En Python, nous pouvons comparer deux chaînes, caractère par caractère, en utilisant soit une boucle for soit une boucle while.

Étant donné que deux chaînes peuvent avoir des longueurs différentes, nous devons nous assurer de ne considérer que la plus petite longueur pour itérer sur les chaînes à des fins de comparaison. À titre de comparaison, nous comptons le nombre des mêmes caractères dans les deux chaînes qui se trouvent aux mêmes index.

Notez qu’il ne s’agit que d’une façon de comparer deux chaînes.

On peut compter la fréquence de chaque caractère présent dans une chaîne pour comparaison ou calculer la distance de Hamming. La distance de Hamming est le nombre d’index où les caractères des chaînes sont différents.

Le code Python suivant implémente ce dont nous avons parlé ci-dessus.

def compare_strings(a, b):
    if a is None or b is None:
        print("Number of Same Characters: 0")
        return

    size = min(len(a), len(b))  # Finding the minimum length
    count = 0  # A counter to keep track of same characters

    for i in range(size):
        if a[i] == b[i]:
            count += 1  # Updating the counter when characters are same at an index

    print("Number of Same Characters:", count)


compare_strings("homophones", "homonyms")
compare_strings("apple", "orange")
compare_strings("apple", "applepie")
compare_strings("pasta", "pizza")
compare_strings(None, None)
compare_strings(None, "valorant")
compare_strings("minecraft", None)

Production :

Number of Same Characters: 4
Number of Same Characters: 0
Number of Same Characters: 5
Number of Same Characters: 2
Number of Same Characters: 0
Number of Same Characters: 0
Number of Same Characters: 0

La complexité temporelle du code ci-dessus est O(n), et la complexité spatiale est O(1) puisque nous ne stockons que le nombre et la longueur minimale.

Le code ci-dessus utilise une boucle for. Comme mentionné ci-dessus, nous pouvons également utiliser une boucle while pour implémenter la même fonctionnalité. Reportez-vous au code suivant pour la même chose.

def compare_strings(a, b):
    if a is None or b is None:
        print("Number of Same Characters: 0")
        return

    size = min(len(a), len(b))  # Finding the minimum length
    count = 0  # A counter to keep track of same characters
    i = 0

    while i < size:
        if a[i] == b[i]:
            count += 1  # Updating the counter when characters are same at an index

        i += 1

    print("Number of Same Characters:", count)


compare_strings("homophones", "homonyms")
compare_strings("apple", "orange")
compare_strings("apple", "applepie")
compare_strings("pasta", "pizza")
compare_strings(None, None)
compare_strings(None, "valorant")
compare_strings("minecraft", None)

Production :

Number of Same Characters: 4
Number of Same Characters: 0
Number of Same Characters: 5
Number of Same Characters: 2
Number of Same Characters: 0
Number of Same Characters: 0
Number of Same Characters: 0

La complexité temporelle du code ci-dessus est O(n), et la complexité spatiale est O(1), puisque nous ne stockons que le nombre et la longueur minimale.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Article connexe - Python String