题目地址
- 点击跳转
题目描述
定义一个单词的“兄弟单词”为:交换该单词字母顺序,而不添加、删除、修改原有的字母就能生成的单词。
兄弟单词要求和原来的单词不同。例如:ab和ba是兄弟单词。ab和ab则不是兄弟单词。
现在给定你n个单词,另外再给你一个单词str,让你寻找str的兄弟单词里,字典序第k大的那个单词是什么?
注意:字典中可能有重复单词。本题含有多组输入数据。
输入描述:
先输入单词的个数n,再输入n个单词。
再输入一个单词,为待查找的单词x
最后输入数字k
输出描述:
输出查找到x的兄弟单词的个数m
然后输出查找到的按照字典顺序排序后的第k个兄弟单词,没有符合第k个的话则不用输出。
示例1
输入
3 abc bca cab abc 1
输出
2
bca
解题思路
需要注意的点:
1、完全相同的两个单词不算做 兄弟单词
,要判断一下
2、最后输出的时候,第 k
位的单词,是从 1 开始数,而不是 0
3、需要判断 k
位是否可以输出
代码
- Python 3
def func():
s = input().split()
n = int(s[0])
words = s[1:n+1]
x = s[-2]
k = int(s[-1])
c = 0
bwords = []
for w in words:
if w == x:
continue
if sorted(w) == sorted(x):
c += 1
bwords.append(w)
bwords = sorted(bwords)
print(c)
if k > 0 and k <= len(bwords):
print(bwords[k-1])
while True:
try:
func()
except:
break