Python版本:Python3.6.2
500. Keyboard Row
先贴自己的代码:
class Solution:
def findWords(self, words):
"""
:type words: List[str]
:rtype: List[str]
"""
row1 = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p']
row2 = ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l']
row3 = ['z', 'x', 'c', 'v', 'b', 'n', 'm']
r_list = []
for i in range(len(words)):
count_row1 = count_row2 = count_row3 = 0
for j1 in range(len(row1)):
count_row1 += words[i].lower().count(row1[j1])
if count_row1 == len(words[i]):
r_list.append(words[i])
continue
for j2 in range(len(row2)):
count_row2 += words[i].lower().count(row2[j2])
if count_row2 == len(words[i]):
r_list.append(words[i])
continue
for j3 in range(len(row3)):
count_row3 += words[i].lower().count(row3[j3])
if count_row3 == len(words[i]):
r_list.append(words[i])
continue
return r_list
检验下:
a = Solution()
print(a.findWords(words=["Hello", "Alaska", "Dad", "Peace"]))
输出:
['Alaska', 'Dad']
速度:
- 解题时间:记录下目前写一题需要1h左右,如果笔试也是这个速度肯定要被pass掉,还是得多练,才做了10+,坚持!
- continue/break:continue是跳过本次循环,接着循环;break是跳出循环,结束循环。实在分不清可以都试一下。
def findWords(self, words):
line1, line2, line3 = set('qwertyuiop'), set('asdfghjkl'), set('zxcvbnm')
ret = []
for word in words:
w = set(word.lower())
if w.issubset(line1) or w.issubset(line2) or w.issubset(line3):
ret.append(word)
return ret
学习下集合(set)类型:
- 集合(set)类型:无序不重复元素
- 基本功能:关系测试、消除重复元素
- 支持运算:联合、交、差、对称差集等数学运算
- 支持 x in set,len(set);for x in set;但作为无序集合,不支持序列类操作,如indexing,slicing等。