- 直观做法
class Solution(object):
def findWords(self, words):
"""
:type words: List[str]
:rtype: List[str]
"""
list=[]
strings=['qwertyuiop','asdfghjkl','zxcvbnm']
for string in strings:
for word in words:
flag = True
for i in range(len(word)):
if word[i].lower() not in string:
flag = False
break
if flag == True:
list.append(word)
return list
- 利用set的性质
class Solution(object):
def findWords(self,words):
result=[]
rows = [set('qwertyuiop'),set('asdfghjkl'),set('zxcvbnm')]
for row in rows:
for word in words:
if set(word.lower())<= row:
result.append(word)
return result
set:首先可排除重复的,其次,具有<的用法,可以判定一个set是否是另一个set的子集
set用法:
>>>set('boy')
set(['y', 'b', 'o'])
>>> a = set('boy')
>>> a.add('python')
>>> a
set(['y', 'python', 'b', 'o'])
集合update方法:是把要传入的元素拆分,做为个体传入到集合中,例如:
>>> a = set('boy')
>>> a.update('python')
>>> a
set(['b', 'h', 'o', 'n', 'p', 't', 'y'])
集合删除操作方法:remove
set(['y', 'python', 'b', 'o'])
>>> a.remove('python')
>>> a
set(['y', 'b', 'o'])
这里不能用list的原因是当words中有重复的字母的时候无法判断(list也有<的用法)
“str”.lower()变成小写字母