моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Учитывая регулярный шаблон и строку s, определите, соответствует ли s тому же регулярному шаблону.
Под соответствием здесь подразумевается полное совпадение. Например, между каждой буквой в шаблоне и каждым непустым словом в строке s существует двустороннее соединение.
Пример 1:
Ввод: шаблон = «абба», s = «собака кошка кошка собака»
Вывод: правда
Пример 2:
Ввод: шаблон = «абба», s = «собака, кошка, рыба»
Вывод: ложь
Пример 3:
Ввод: шаблон = «аааа», 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