Leetcode刷题笔记python---键盘行

键盘行

题目


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

Leetcode刷题笔记python---键盘行

示例1:

输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]
注意:

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

解答


代码:
将题目分解为两步,

  1. 判断一个字符串在不在另一个字符串内
  2. 再遍历

代码:

class Solution:
    def findWords(self, words):
        """
        :type words: List[str]
        :rtype: List[str]
        """
        #构建一个函数判断一个字符串x是不是全在y中
        def allin(x,y):
            n=0
            for i in x.lower():
                if i in y.lower():
                    n+=1
            if n==len(x):
                return True
            else:
                return False
        keyboard=['qwertyuiop','asdfghjkl','zxcvbnm']
        num=[]
        for i in words:
            for j in keyboard:
                if allin(i,j):
                    num.append(words.index(i))
        word=[]
        for i in num:
            word.append(words[i])
        return word