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"]))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)