题目描述
定义一个单词的“兄弟单词”为:交换该单词字母顺序,而不添加、删除、修改原有的字母就能生成的单词。
兄弟单词要求和原来的单词不同。例如: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
代码实现如下:
import itertools
def func():
while True:
try:
lists = input().split()
n = lists[0]
str_list = lists[1:-2]
search = lists[-2]
num = int(lists[-1])
res = []
for i in itertools.permutations(search):
v = ''.join(list(i))
#print(i)
if v != search and (v not in res):
for j in str_list:
#print("==v:",v,str_list.count(v))
if v == j :
res.append(v)
res.sort()
#print(res)
print(len(res))
if len(res)>=num-1:
print(res[num-1])
except Exception as e:
#print(e)
break
if __name__ == '__main__':
func()