Κοινή χρήση τεχνολογίας

LeetCode 290. Πρότυπα λέξεων

2024-07-12

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

LeetCode 290. Πρότυπα λέξεων

Δεδομένου ενός κανονικού σχεδίου και μιας συμβολοσειράς s, προσδιορίστε εάν το s ακολουθεί το ίδιο κανονικό μοτίβο.
Η συμμόρφωση εδώ αναφέρεται στην πλήρη αντιστοίχιση Για παράδειγμα, υπάρχει μια αμφίδρομη αντιστοιχία σύνδεσης μεταξύ κάθε γράμματος σε μοτίβο και κάθε μη κενή λέξη στη συμβολοσειρά s.
Παράδειγμα 1:
Εισαγωγή: μοτίβο = "abba", s = "σκύλος γάτα σκύλος γάτα"
Έξοδος: true
Παράδειγμα 2:
Εισαγωγή: μοτίβο = "abba", s = "σκύλος γάτα-ψάρι γάτα"
Έξοδος: ψευδής
Παράδειγμα 3:
Εισαγωγή: μοτίβο = "aaaa", s = "σκύλος γάτα γάτα σκύλος"
Έξοδος: ψευδής
ίχνος:
1 <= σχέδιο.μήκος <= 300
Το μοτίβο περιέχει μόνο πεζά αγγλικά γράμματα
1 <= μήκος <= 3000
s περιέχει μόνο πεζά αγγλικά γράμματα και " "
Το s δεν περιέχει προπορευόμενα ή υστερούντα ζεύγη διαστημάτων
Κάθε λέξη στο s χωρίζεται από ένα μόνο διάστημα

Πίνακας κατακερματισμού, σχέση διχοτόμησης

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