Leetcode.500——键盘行

题目

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

American keyboard

示例:

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

注意:

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

思路

按行将键盘上的三行字母放入三个列表中去,将每个单词与这个三个列表逐一比对,如果某一单词所有字符全在某一列表当中,那么将这个单词加入结果集。

代码示例

class Solution:
    def findWords(self, words: List[str]) -> List[str]:
        strs=[]#初始化结果集
        #生成比对表
        list1=['q','w','e','r','t','y','u','i','o','p']
        list2=['a','s','d','f','g','h','j','k','l']
        list3=['z','x','c','v','b','n','m']
        #遍历待筛选单词的集合
        for i in words:
            #调用compare()方法
            if self.compare(i.lower(),list1) or self.compare(i.lower(),list2) or self.compare(i.lower(),list3):
                strs.append(i)
        return strs
                

    def compare(self,word,lists):
        """
        word[str]:待比对单词
        lists[list]:比照表
        """
        word=list(word)
        for i in word:
            if i in lists:
                continue
            else:
                return False
        return True

力扣报告

22/22 cases passed (24 ms)
Your runtime beats 96.89 % of python3 submissions
Your memory usage beats 32.16 % of python3 submissions (13.5 MB)

猜你喜欢

转载自blog.csdn.net/qq_42229092/article/details/104443086