查找兄弟单词(20200303)

题目描述:

实现一个可存储若干个单词的字典。用户可以:
1、在字典中加入单词
2、查找指定单词在字典中的兄弟单词个数
3、查找指定单词的指定序号的兄弟单词,指定序号指字典中兄弟单词按字典顺序排序后的序号(从1开始)
4、清空字典中所有单词

定义、格式说明:
单词:由小写英文字母组成,不含其它字符
兄弟单词:给定一个单词X,如果通过任意交换单词中字母的位置得到不同的单词Y,那么定义Y是X的兄弟单词
字典顺序:两个单词(字母按照自左向右顺序),先以第一个字母作为排序的基准,如果第一个字母相同,就用第二个字母为基准,如果第二个字母相同就以第三个字母为基准。依此类推,如果到某个字母不相同,字母顺序在前的那个单词顺序在前。如果短单词是长单词从首字母开始连续的一部分,短单词顺序在前
举例:bca是abc的兄弟单词;abc与abc是相同单词,不是兄弟单词

规格:
0<=字典中所含单词个数<=1000
1<=单词所含字母数<=50
注:测试用例保证,接口中输入不会超出如上约束

输入描述:
先输入字典中单词的个数,再输入n个单词作为字典单词。
输入一个单词,查找其在字典中兄弟单词的个数
再输入数字n

输出描述:
根据输入,输出查找到的兄弟单词的个数

示例1
输入
3 abc bca cab abc 1
输出
2
bca

题解:

思路:本题最主要的是审题,有两点需要注意
1、兄弟单词的定义
2、规格中说的两点,已经备注好,在测试用例输入时保证,故编程时不需要做考虑,但是格式说明中的单词定义还是需要做控制的

# coding=utf=8d = []
b=[]# 字典中单词的个数
n = int(input()) 
for i in range(n):word = input()s = ""for ch in word:# 保证单词是由小写英文字母组成if ch.isalpha()>0:s += ch.lower()  d.append(s)
# 查找兄弟单词
w=input()
for wd in d:count=0for c in w:if wd.count(c)>0:count+=wd.count(c)if count==len(w) and wd!=w:b.append(wd)
#兄弟单词个数
print(len(b))
n=int(input())
#找到的第n个兄弟单词
print(b[n-1])

说明:
目前本King的代码能力只能按上述方式实现,后续有更好的方案,欢迎各位指点,也会不定期做修改~


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部