[LeetCode]290. Word Pattern (Easy) Python-2021.01.31/2023.01.01
Posted on 2023-01-01 16:03 Uriel 閱讀(56) 評論(0) 編輯 收藏 引用 所屬分類: 閑來無事重切Leet Code 、Hash給定一個字符組成的pattern,和一個單詞組成的字符串(單詞以空格分開),問字符串是否滿足單詞的pattern,例:
Example 3:
Example 1:
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Example 2:
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
Example 3:
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
寫法一:用字典記錄從每個單詞到一個字母的映射,再用一個set保存已經(jīng)擁有映射值的字母(否則example3會錯)
寫法二:用字典記錄從每個單詞到一個字母的映射,每次查找字典的values來判斷是否與已有的映射值重復(fù)(這樣時間效率不如set)
寫法一:用字典記錄從每個單詞到一個字母的映射,再用一個set保存已經(jīng)擁有映射值的字母(否則example3會錯)
1 #290
2 #Runtime: 18 ms (Beats 81.66%)
3 #Memory: 13.2 MB (Beats 98.30%)
4
5 class Solution(object):
6 def wordPattern(self, pattern, s):
7 """
8 :type pattern: str
9 :type s: str
10 :rtype: bool
11 """
12 str_lst = s.split()
13 str_dct = {}
14 chr_set = set()
15 i = 0
16 if len(pattern) != len(str_lst):
17 return False
18 for i in range(len(str_lst)):
19 if str_lst[i] in str_dct:
20 if str_dct[str_lst[i]] != pattern[i]:
21 return False
22 else:
23 if pattern[i] in chr_set:
24 return False
25 chr_set.add(pattern[i])
26 str_dct[str_lst[i]] = pattern[i]
27 i += 1
28 return True
2 #Runtime: 18 ms (Beats 81.66%)
3 #Memory: 13.2 MB (Beats 98.30%)
4
5 class Solution(object):
6 def wordPattern(self, pattern, s):
7 """
8 :type pattern: str
9 :type s: str
10 :rtype: bool
11 """
12 str_lst = s.split()
13 str_dct = {}
14 chr_set = set()
15 i = 0
16 if len(pattern) != len(str_lst):
17 return False
18 for i in range(len(str_lst)):
19 if str_lst[i] in str_dct:
20 if str_dct[str_lst[i]] != pattern[i]:
21 return False
22 else:
23 if pattern[i] in chr_set:
24 return False
25 chr_set.add(pattern[i])
26 str_dct[str_lst[i]] = pattern[i]
27 i += 1
28 return True
寫法二:用字典記錄從每個單詞到一個字母的映射,每次查找字典的values來判斷是否與已有的映射值重復(fù)(這樣時間效率不如set)
1 #290
2 #Runtime: 36 ms (Beats 15.62%)
3 #Memory: 13.5 MB (Beats 71.99%)
4
5 class Solution(object):
6 def wordPattern(self, pattern, s):
7 """
8 :type pattern: str
9 :type s: str
10 :rtype: bool
11 """
12 str_list = s.split(" ")
13 dt = {}
14 if len(pattern) != len(str_list):
15 return False
16 for i in range(0, len(pattern)):
17 if dt.has_key(pattern[i]):
18 if dt[pattern[i]] != str_list[i]:
19 return False
20 else:
21 if str_list[i] in dt.values():
22 return False
23 dt[pattern[i]] = str_list[i]
24 return True
2 #Runtime: 36 ms (Beats 15.62%)
3 #Memory: 13.5 MB (Beats 71.99%)
4
5 class Solution(object):
6 def wordPattern(self, pattern, s):
7 """
8 :type pattern: str
9 :type s: str
10 :rtype: bool
11 """
12 str_list = s.split(" ")
13 dt = {}
14 if len(pattern) != len(str_list):
15 return False
16 for i in range(0, len(pattern)):
17 if dt.has_key(pattern[i]):
18 if dt[pattern[i]] != str_list[i]:
19 return False
20 else:
21 if str_list[i] in dt.values():
22 return False
23 dt[pattern[i]] = str_list[i]
24 return True