题解 | #查找兄弟单词#

查找兄弟单词

https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

本题难点在换顺序的判断处,我一开始用的代码是:
if ''.join(sorted(word)) == target_word:
结果用例3/10通过,之后盘查半天也找不到原因,最后改为:
if sorted(word) == sorted(target_word):
然后就通过了。
这个为什么前者不行呢?有人知道的话可以评论一下。

然后说一下这道题的思路:

1、先将输入的字符串分类整理
2、直接遍历,判断单词是否符合要求(换了顺序后等于目标单词 且 不换顺序不等于目标单词)
3、如果符合要求,就将该单词加入到一个列表中(比如dict_list)
4、最后将dict_list排序,然后统计数量,如果数量大于k就输出第k个单词(注意第k个是dict_list[k-1])


while True:
    try:
        inputstring = input().split(' ')
        n = int(inputstring[0])
        k = int(inputstring[-1])
        target_word = inputstring[-2]
        dict_list = []
        for word in inputstring[1:-2]:
            if sorted(word) == sorted(target_word):
            #if ''.join(sorted(word)) == target_word: #word换顺序后和target一样,有可能是兄弟
                if word != target_word: #确定是兄弟
                    dict_list.append(word) #加入到dict中
        count = len(dict_list)


        if count >= k: #记得题意中说的分类讨论
            last_dict = sorted(dict_list)
            print(count)
            print(last_dict[k - 1])
        else:
            print(count)
    except:
        break



全部评论

相关推荐

在改简历的大卫很认真:天天有面试 = 你已经在 offer 门口了。 海投能面成这样,说明你的简历、基础、学历都是过关的,缺的只是一次刚好匹配的缘分。 关于你说的 SQL 恐惧,我帮你捋一下: - 面试里考来考去,真就那几类: 分组、去重、关联、子查询、窗口函数(row_number、rank、sum 开窗) ​ - 面试官要的不是“写得花里胡哨”,而是思路稳、不出错。 你恐惧的本质不是不会, 是怕临场卡壳、怕写错、怕被追问。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务