因为我对 python 不熟,题目可能会在简单和中等之间跳来跳去
用 Python3 解 LeetCode 系列,290 Word Pattern
,属於 Easy
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
Example 4:
Input: pattern = "abba", s = "dog dog dog dog"
Output: false
pattern
和s
s
一个单字,相同字母单字必须一样s
是否符合pattern
pattern
字母数量和s
单字数量不同,一定就是 falsemapping_dict
的 key 是pattern
的字母,值是同 index 的s
内容exist_check_dict
的 key 是s
的单字,值是pattern
的字母pattern
所有值pattern
字母为 key 的mapping_dict
资料,和s
中相同位置的单字有没有一样pattern
字母同 index 的 s 单字所对应的字母和exist_check_dict
纪录中的字母有没有一样class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
# 长度判断,如果不同长度一定就是 false
words_list = s.split(' ')
words_len = len(words_list)
pattern_len = len(pattern)
if words_len != pattern_len:
return False
mapping_dict = dict()
exist_check_dict = dict()
for index, val in enumerate(pattern):
# 如果 pattern key 存在
if val in mapping_dict.keys():
# 检查 pattern 字母代表的单字是否一致
if mapping_dict[val] != words_list[index]:
return False
else:
# 检查有没有重复的单字在不同字母中
if words_list[index] in exist_check_dict:
if exist_check_dict[words_list[index]] != val:
return False
else :
mapping_dict[val] = words_list[index]
exist_check_dict[words_list[index]] = val
return True
<<: EP 29: Archive and Publish TopStore App for Android in Visual Studio
解构赋值(Destructuring Assignment)是一个在ES6的新特性,用於提取阵列或物...
UIS里看起来最不容易理解的就是它的UI架构,阶段关系和一堆堆的元件看了就觉得不容易放入到现有的专案...
XGBoost 今日学习目标 XGBoost 介绍 XGBoost 是什麽?为什麽它那麽强大? XG...
Q: 是不是来点icon比较知道这是干嘛的? A: 不复杂的可以用css画,复杂的可以考虑出图或是...
了解完套件更新的地方後,再回来玩其他的网路架构。依照day04的架构,严格说来树梅派wifi连上的其...