500. 键盘行

给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。

 

 

 

 

 

示例:

输入: ["Hello", "Alaska", "Dad", "Peace"]
输出: ["Alaska", "Dad"]
 

注意:

你可以重复使用键盘上同一字符。
你可以假设输入的字符串将只包含字母。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/keyboard-row
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

哈希

class Solution:
    def findWords(self, words: List[str]) -> List[str]:
        key={}
        for i in 'qwertyuiop':
            key[i]=1
            key[i.upper()]=1
        for i in 'asdfghjkl':
            key[i]=2
            key[i.upper()]=2
        for i in 'zxcvbnm':
            key[i]=3
            key[i.upper()]=3
        res=[]
        for i in words:
            flag=1
            for j in i:
                if key[j]!=key[i[0]]:
                    flag=0
                    break
            if flag==1:
                res.append(i)
        return res
        

 

 set()比较

class Solution(object):
    def findWords(self, words):
        set1 = set('qwertyuiop')
        set2 = set('asdfghjkl')
        set3 = set('zxcvbnm')
        res = []
        for i in words:
            x = i.lower()
            setx = set(x)
            if setx<=set1 or setx<=set2 or setx<=set3:
                res.append(i)
            
        return res

 

posted @ 2020-10-10 20:56  XXXSANS  阅读(100)  评论(0编辑  收藏  举报