题解 | #查找兄弟单词#
查找兄弟单词
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
