Partage de technologie

LeetCode 290. Modèles de mots

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

LeetCode 290. Modèles de mots

Étant donné un modèle régulier et une chaîne s, déterminez si s suit le même modèle régulier.
La conformité fait ici référence à une correspondance complète. Par exemple, il existe une correspondance de connexion bidirectionnelle entre chaque lettre du modèle et chaque mot non vide de la chaîne s.
Exemple 1:
Entrée : motif = « abba », s = « chien chat chat chien »
Résultat : vrai
Exemple 2 :
Entrée : motif = « abba », s = « chien chat chat poisson »
Résultat : faux
Exemple 3 :
Entrée : motif = « aaaa », s = « chien chat chat chien »
Résultat : faux
indice:
1 <= motif.longueur <= 300
le motif ne contient que des lettres anglaises minuscules
1 <= longueur s <= 3000
s contient uniquement des lettres anglaises minuscules et « »
s ne contient aucune paire d'espaces de début ou de fin
Chaque mot de s est séparé par un seul espace

Table de hachage, relation de bijection

class Solution:
    def wordPattern(self, pattern: str, s: str) -> bool:
        length = len(pattern)
        sub_strs = s.split()
        if len(pattern) != len(sub_strs):
            return False
        d1, d2 = {}, {}
        for i in range(length):
            if pattern[i] in d1:
                if d1[pattern[i]] != sub_strs[i]:
                    return False
            if sub_strs[i] in d2:
                if d2[sub_strs[i]] != pattern[i]:
                    return False
            d1[pattern[i]] = sub_strs[i]
            d2[sub_strs[i]] = pattern[i]
        return True
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17