问题
给定一本英语单词词典,请找出所有的变位词集。所谓的变位词是指,组成各个单词的字母完全相同,只是字母排列的顺序不同。
例如,“pots”,”stop”和“tops”互为变位词,因为每个单词都可以通过改变其他单词中字母的顺序来得到。
解决思路
编程珠玑的变位词程序要按照三个步骤来执行,其中前一个步骤程序的输出作为下一个步骤程序的输入:
- 程序标识单词。
- 程序排序标识后的文件。
- 程序将这些单词压缩为每个变位词类一行的形式。
单词的字典的处理过程:
由以上可看出需要三个程序的处理。
sign程序
假设输入单词的长度不超过100,对每个输入的单词依照字母进行排序,将结果输入这个单词所对应的“签名”。
sort程序
程序排序后的输出的“签名”,对其输出的结果排序,如上图。
squash程序
将同一个变位词类中的各个单词放到同一行中。