题解 | #查找兄弟单词#
查找兄弟单词
http://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
描述
定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字母就能生成的单词。
兄弟单词要求和原来的单词不同。例如:ab和ba是兄弟单词。ab和ab则不是兄弟单词。
现在给定你n个单词,另外再给你一个单词str,让你寻找str的兄弟单词里,按字典序排列后的第k个单词是什么?
注意:字典中可能有重复单词。本题含有多组输入数据。
输入描述:
先输入单词的个数n,再输入n个单词。 再输入一个单词,为待查找的单词x 最后输入数字k
输出描述:
输出查找到x的兄弟单词的个数m 然后输出查找到的按照字典顺序排序后的第k个兄弟单词,没有符合第k个的话则不用输出。
if __name__ == "__main__":
rcvStr = input()
rcvList = rcvStr.split(" ")
strList = []
for i in range(1, int(rcvList[0]) + 1):
strList.append(rcvList[i])
cmpStr = rcvList[int(rcvList[0]) + 1]
index = int(rcvList[len(rcvList) - 1])
retList = []
for i in strList:
if len(cmpStr) != len(i) or i == cmpStr:
continue
b = True
for j in cmpStr:
if j not in i:
b = False
break
if cmpStr.count(j) != i.count(j):
b = False
break
if b == True:
retList.append(i)
retList.sort()
print(len(retList))
if(index <= len(retList)):
print(retList[index - 1])
1.首先把所有字典字符串放入数组中,注意不能去重
2.对比字符串和数组中字符串, 长度要相等 不能重复 每一个字符统计个数 需要和字典中一致
3.打印