求任意字母组成的所有单词
现有一A-Z的单词词典,
给定一字符串,
求字符串任意字母排列组成的所有单词?
求好解法
[解决办法]
好解法?求数量?求全排列生成的所有字符串?
如果这个字符串长度为n,那么所有串的数量是n!啊,只能用搜索来枚举.
先记录这个字符串里出现的字母,然后直接dfs.好像就这样吧...
[解决办法]
n!+(n-1)!....+1!
莫非是这样?
[解决办法]
题目是不是要求:根据字符串生成单词,但是单词必须存在于字典中?
如果先根据全排列生成字符串,然后到字典中查找是否合法,可能效率不高。不如根据字典中的单词,看看那些是符合这个字符串要求的,可能更快一些。
[解决办法]
首先你要有个字典,为了高效,必须先对字典中的数据进行预处理。
提供以下方式:
1、预处理字典:将字典中每个单词进行从a-z排序,比如讲hello处理为ehllo,然后把单词进行按字母序排序,当然,需要记录处理后的单词对于原单词的索引,以获取原单词。
2、取得一个字符串,如单词一样处理,按a-z排序,然后,使用二分法来查找预处理过的字典,将查到的单词的索引的值取出,便可以高效的进行查询。
思路是这样的,细节部分还有很多可以优化。
建议参阅《编程珠玑》2.1的问题C的解法
[解决办法]
同意4楼。