应用介绍:
易位构词是python初学者用于加深对数据结构理解的经典练习题 易位构词练习题链接 题目12-2:
题目:编写一个程序,使之能从文件中读取单词列表(参考读取单词列表一节), 并且打印出所有属于易位构词的单词组合。
下面是一个输出结果的示例:
['deltas', 'desalt', 'lasted', 'salted', 'slated', 'staled']
['retainers', 'ternaries']
['generating', 'greatening']
['resmelts', 'smelters', 'termless']
本节来介绍这道题目的经典解法的原理。
点击这里下载用来分析的单词表
思路分析:
所有属于易位构词的单词都有基本的特点:由相同的字母(letter)组成。
本道题目基本的数据结构是字典,这一点应该很容易能意识到。每个字典的值(value)为某个字母组合所对应的单词,这一点也很容易想到。难点是如何表示字典的键(key)呢?要想字典的值的每个元素(即由相同字母构成的每个单词)都具有相同的键,唯一的办法就是对构成每个元素的字母进行排序,经过排序后,所有元素就有了相同的键