LeetCode 500.键盘行(python)

题目要求返回可用同一行键盘字母打印的单词。给定输入如['Hello', 'Alaska', 'Dad', 'Peace'],输出['Alaska', 'Dad']。解题策略是创建键盘行的列表,然后检查每个单词是否能仅用一行键盘上的字母表示。若单词全由同一行字母构成,将其加入结果列表。注意考虑单词大小写并简化判断逻辑。" 80181531,7632707,使用Idea社区版搭建SpringBoot+Mybatis Web工程,"['SpringBoot开发', 'Java Web', 'IDEA集成开发', 'Mysql连接', ' Maven构建']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

在这里插入图片描述示例:

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

注意:

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

解题思路:
将键盘字符每一行放入一个列表中,然后依次对每一个单词进行判断,是否可以由第一行输出、第二行输出、第三行输出;
由于每个单词都要进行三行判断,所以将判断一个单词在不在一行写成一个函数,用一个flag标志记录单词中在某一行的个数,若最后flag等于单词长度,说明该单词可由一行输出。
p.s.由于给定的单词中包含大写字母,所以在判断时要将单词宣布转换为小写
p.s.别人的做法:,把三个键盘行放入一个列表中,用三重循环进行判断,k表示单词中的字母,j表示键盘的一行,若k不在这一行,直接结束这一层循环,若k在这一行,则继续判断,直到最后一个字母也在这一行,则将这个单词i添加倒输出列表中。

#                     if  k not in j:
#                         break
#                     elif k == ss[-1]:
#                         res.append(i)
def oneline(word,f):#判断单词是不是在一行
    flag=0
    for i in word.lower():
        if i in f:
            flag+=1
    if flag==len(word):
        return 1
    else:
        return 0
    
class Solution:
    def findWords(self, words: List[str]) -> List[str]:
        f1=['q','w','e','r','t','y','u','i','o','p']
        f2=['a','s','d','f','g','h','j','k','l']
        f3=['z','x','c','v','b','n','m']
        A=[]
        for word in words:
                a=oneline(word,f1)#判断单词是不是在第一行
                b=oneline(word,f2)
                c=oneline(word,f3)
               # print(word,a,b,c)
                if (a or b or c) ==1: 
                    A.append(word)
        return A
                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值