6/9 每日一題(兩種字串的規則是否相同)
Given a pattern and a string s, find if s follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in s.
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
Constraints:
1 <= pattern.length <= 300patterncontains only lower-case English letters.1 <= s.length <= 3000scontains only lowercase English letters and spaces' '.sdoes not contain any leading or trailing spaces.- All the words in
sare separated by a single space.
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
s_list=s.split() #拆成list
if len(pattern) != len(s_list):
return False
pattern_list=[]
check_dict={}
for i in pattern:
pattern_list.append(i)
for i,j in zip(pattern_list,s_list):
if i in check_dict:
#如果key在字典中,但value不同就表示規則不同
if check_dict[i] != j:
return False
else:
if any(j in i for i in check_dict.values()):
#避免不同的key配賦同樣的value
return False
else:
check_dict[i]=j
return True
------------------------參考解答
檢查映射 可以使用字典 會提執行升效率
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
s_list=s.split() #拆成list
if len(pattern) != len(s_list):
return False
patter_list=[]
check_dict={}
value_set=set() #檢查映射
for i in pattern:
patter_list.append(i)
for i,j in zip(patter_list,s_list):
if i in check_dict:
#如果key在字典中,但value不同就表示規則不同
if check_dict[i] != j:
return False
else:
if j in value_set:
#避免不同的key配賦同樣的value
return False
else:
check_dict[i]=j
value_set.add(j)
return True
標籤: leetcode

0 個意見:
張貼留言
訂閱 張貼留言 [Atom]
<< 首頁