私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
規則的なパターンと文字列 s が与えられた場合、 s が同じ規則的なパターンに従っているかどうかを判断します。
ここでの準拠とは、たとえば、パターン内の各文字と文字列 s 内の空でない各単語の間に双方向の接続対応があることを指します。
例 1:
入力: pattern = "abba"、s = "犬、猫、猫、犬"
出力: true
例 2:
入力: pattern = "abba"、s = "犬、猫、猫、魚"
出力: false
例 3:
入力: pattern = “aaaa”、s = “犬猫猫犬”
出力: false
ヒント:
1 <= パターンの長さ <= 300
パターンには小文字の英字のみが含まれます
1 <= s.length <= 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