Leedcode-键盘行

自己写的:

复制代码
class Solution:
    # 定义findWords方法,该方法接受一个字符串列表words作为参数
    def findWords(self, words: List[str]) -> List[str]:
        # 定义三个字符串,分别包含键盘上三行的字母
        str1 = "qwertyuiopQWERTYUIOP"  # 第一行字母
        str2 = "asdfghjklASDFGHJKL"  # 第二行字母
        str3 = "zxcvbnmZXCVBNM"  # 第三行字母

        # 初始化一个空列表res,用于存储符合条件的单词
        res = []

        # 循环遍历words列表,直到列表为空
        while words:
            # 初始化一个空列表temp,用于存储当前单词中每个字母所属的行
            temp = []
            # 弹出words列表中的最后一个元素作为当前单词
            cur = words.pop()

            # 遍历当前单词中的每个字母
            for i in cur:
                # 判断字母i属于哪一行,并在temp列表中添加对应的数字
                if i in str1:
                    temp.append(1)  # 如果字母在第一行,添加1
                elif i in str2:
                    temp.append(2)  # 如果字母在第二行,添加2
                elif i in str3:
                    temp.append(3)  # 如果字母在第三行,添加3

            # 如果temp列表中所有元素都相同,说明当前单词的所有字母都在同一行
            # 则将当前单词添加到结果列表res中
            if len(set(temp)) == 1:
                res.append(cur)

        # 返回符合条件的单词列表res
        return res
复制代码

 gpt优化:

复制代码
class Solution:
    def findWords(self, words):
        # 定义一个字典,将键盘行与对应的字母映射起来
        keyboard = {}
        for ch in "qwertyuiopQWERTYUIOP":
            keyboard[ch] = 1
        for ch in "asdfghjklASDFGHJKL":
            keyboard[ch] = 2
        for ch in "zxcvbnmZXCVBNM":
            keyboard[ch] = 3
        
        # 初始化结果列表
        res = []
        
        # 直接遍历words列表,不需要使用while循环和pop操作,提高效率
        for word in words:
            # 假设第一个字母决定了整个单词的键盘行
            row = keyboard[word[0]]
            # 检查word中的所有字母是否都在同一个键盘行
            if all(keyboard.get(ch, -1) == row for ch in word):
                # 如果是,则添加到结果列表
                res.append(word)
        
        # 返回结果列表
        return res

# 示例使用
sol = Solution()
print(sol.findWords(["Hello", "Alaska", "Dad", "Peace"]))
复制代码

 

posted @   Junior_bond  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示