leetcode第290题,这个题是一个匹配题,虽然分类是简答题,但是容易出现考虑情况不全的问题。下面一步步分析一下.
首先按照题目要求先匹配,最简单的方法当然是用hash,这里我采用了python的字典,将patter中的字母最为键值,逐行扫描patter中的字母和字符串列表中的每个字符串,看能否在字典中匹配,只要有一个匹配不上,就立刻返回False。
以上思路不难,下面就是小细节坑爹的地方了。
1、如果patter和字符串列表长度不一致怎么办?
2、如果patter中是空字符串怎么办?
3、如果字符串全部相同怎么办?
针对以上坑爹细节,必须注意去debug,然后才能通过所有数据。
class Solution(object):
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
d = {}
n = len(pattern)
if n == 0:
return False
strList = str.split()
m = len(strList)
if m != n:
return False
for i in range(n):
if pattern[i] not in d:
d[pattern[i]] = strList[i]
else:
if strList[i] != d[pattern[i]]:
return False
if len(list(set(d.values()))) != len(d.values()):
return False
return True