如何快速找出单词的变位词

来源:互联网 发布:linux rpm位置 编辑:程序博客网 时间:2024/05/16 04:52
 

给定一个英语字典,找出其中的所有变位词的集合。例如,”pots”、”stop”和”tops”互为变位词,因为每一个单词都可以通过改变其他单词中字幕的顺序来得到

解决这个问题最直接的想法就是全排列给定的单词,对于得到的每一个字符串序列从字典中查找是否为一单词,如果是则输出否则测试下一个序列。对于短单词不失为一种实现方法,但是如果单词的长度很长,如”cholecystoduodenostomy”的一个变位词”duodenocholecystostomy”有22!种排列。这个数字大的惊人。

有没有一种简单快速的方法找出变位词呢?我们仔细观察得出,变位词就是原单词字母的重排,字母个数并没有改变,对其字母排序后的结果都是一样的,如”opst”。这样我们就可以以单词排序后的结果作为一个标识,具有同一标识的单词就互为同位词。

具体方法为:

1、  给字典中的每一个单词设定一个标识,该标识为单词的字母的有序序列。如”stop”的标识为”opst”,这样形成一个单词——标识对

2、  对单词标识对按照标识排序

这样具有同一标识的单词就互为变位词了

原创粉丝点击