题解 | #查找兄弟单词#

查找兄弟单词

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



全部评论

相关推荐

09-24 17:00
门头沟学院 Java
点赞 评论 收藏
分享
驼瑞驰_招募评论官版...:点击就挂,露头就秒
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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