⌨️ 键盘行


  • 解题思路:
    1.设置三个集合,分布存储键盘上三行字母
    2.判断单词中所有的字母是否出现在这三个集合即可

  • Python版:

class Solution:
    def findWords(self, words: List[str]) -> List[str]:
        line1, line2, line3 = set('qwertyuiop'), set('asdfghjkl'), set('zxcvbnm')
        res = []
        for word in words:
            w = set(word.lower())
            if w.issubset(line1) or w.issubset(line2) or w.issubset(line3):
                res.append(word)
        return res

Tips:

  • 使用set()方便去重

  • issubset()方法:用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False。

    • 使用方法:set.issubset(set)
  • 简洁版

class Solution:
    def findWords(self, words: List[str]) -> List[str]:        
        return list(filter(lambda word: any(set(word.lower()).issubset(line) for line in [set('asdfghjkl'),set('qwertyuiop'),set('zxcvbnm')]),words))

  • 链接:https://leetcode-cn.com/problems/keyboard-row/solution/yi-xing-shi-yong-filterhan-shu-de-yi-xing-pythonli/
    Tips:
  • any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。元素除了是 0、空、FALSE 外都算 TRUE。
  • 简单介绍一下filter()函数
    这个函数接收两个参数,第一个是一个函数,这个函数要求返回一个布尔变量。第二个是一个列表。
    然后对于列表的每一项,运行这个函数
    如果运行的结果是True,那么留下这一项,否则删掉
    即直观上的「筛选」过程。
    最后要转成list类型,否则是一个filter类型。
    举例而言a = list(filter(lambda x: x % 2 == 1,[1,2,3]))
    相当于把[1,2,3]这个列表所有的奇数提取出来,返回一个[1,3]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 500. 键盘行 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 示例: 注意...
    TheKey_阅读 1,081评论 0 1
  • 题目 难度:★★☆☆☆类型:数组 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示...
    玖月晴阅读 3,652评论 0 0
  • 500 Keyboard Row 键盘行 Description:Given a List of words, r...
    air_melt阅读 2,498评论 0 0
  • 键盘行 题目 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 示例: 输入: ...
    饮酒醉回忆阅读 1,184评论 0 1
  • 题目 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 示例: 输入: ["He...
    LonnieQ阅读 1,013评论 0 1

友情链接更多精彩内容