Menu
CoddyTech

Design Add and Search Words Data Structure

İki işlemle bir sözcük sözlüğü oluşturun. addWord w sözcüğü w kaydeder. search p, kayıtlı bir sözcüğün p deseniyle eşleşip eşleşmediğini söyler: uzunlukları aynı olmalı ve desenin her konumunda aynı harf ya da herhangi bir harfi temsil eden bir nokta . bulunmalıdır.

i işlemi, sözcük ya da desen words[i] üzerinde ops[i] işlemidir. İşlemleri boş bir sözlükte sırayla uygulayın ve her biri için bir dize döndürün: addWord için "null", search için "true" veya "false".

Fonksiyon

wordDictionaryOps(ops: string-array, words: string-array) → string-array
opsstring-array
işlemler, yürütüldükleri sırayla
wordsstring-array
Eklenecek sözcük veya aranacak kalıp; her işlemde bir tane
Döndürürstring-array
işlem başına metin olarak bir yanıt

Kısıtlar

  • 1 ≤ ops.length ≤ 2500
  • words.length == ops.length
  • Her ops[i], addWord ya da search değeridir.
  • 1 ≤ words[i].length ≤ 20
  • Eklenecek sözcük yalnızca küçük İngilizce harflerden oluşur.
  • Aranacak bir desen, küçük İngilizce harfler ve en fazla 3 nokta içerir.

Örnekler

Girdi
ops = ["addWord", "addWord", "search", "search", "search", "search"]words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]
Çıktı
["null", "null", "true", "false", "false", "true"]
Açıklama
r.se her iki kelimeyle de eşleşir: nokta, rose sözcüğündeki o harfini ve rise sözcüğündeki i harfini karşılar. Nokta hiçbir zaman eksik bir harfin yerini tutmaz; bu nedenle ros ve rose. eşleşmez. ..s. eşleşir; çünkü her iki kelimenin de üçüncü harfi s'dir.
challenge icon

Ek soru

Bir kalıp, boş olanlar da dahil olmak üzere herhangi bir harf dizisini temsil eden * karakterini de içerebiliyorsa search işlevini nasıl genişletirdin?

Kodu sıfırla
def wordDictionaryOps(ops, words):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

ops = ["addWord", "addWord", "search", "search", "search", "search"]
words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]

Beklenen Çıktı

["null", "null", "true", "false", "false", "true"]