LeetCode 290. 单词规律(python)
class Solution(object):
def wordPattern(self, pattern, str):
word = list(pattern) # word表示字母
words = str.split(' ') #words表示单词
num = 0 #用于记录每次循环通过的次数
a = set(word);b = set(words) #将word列表和words列表转换成集合
if len(a) != len(b):
return Flase #如果两个集合中的元素种类个数不同,则返回Flase
if len(word) != len(words):
return Flase #如果两个列表中的元素个数不同,则返回Flase
"""以上两步是为了确保(1.)元素种类个数相同,比如:都只用两种啊a,b和dog,cat。
(2.)两个生成的列表word,words中元素个数相同,如果不同,肯定无法对应"""
for i in range(len(word) - 1):#只有0,1,2,没有3,如果有3,则i+1就等于4超出索引范围
if (word[i] != word[i + 1]) and (words[i] == words[i + 1]):
return Flase #word中的前一个和后一个不同,而words中的前一个和后一个相同,则返回Flase
break
elif (word[i] == word[i + 1]) and (words[i] != words[i + 1]):
return Flase #与上一步同理
break
else:
num += 1 #如果每次循环word和words的类型都相同,则num+1
if num == len(words) - 1:
return True
执行结果