用到一个Python知识点:
两个set可以比大小来表示是不是子集.
class Solution(object): def findWords(self, words): """ :type words: List[str] :rtype: List[str] """ keyboard=[set('qwertyuiop'),set('asdfghjkl'),set('zxcvbnm')] ans=[] for word in words: s_word=set(word.lower()) for line in keyboard: if s_word<=line: ans.append(word) break return ans
写的更Pythonic一点:
class Solution(object): def findWords(self, words): return list(filter(lambda w: any([set(w.lower()) <= set('qwertyuiop'), set(w.lower()) <= set('asdfghjkl'),set(w.lower()) <= set('zxcvbnm')]), words))