关于变位词的一点总结和思考

(1)《编程珠玑》中提到的一个问题:给定一个英文字典,找出其中的所有变位词集合。例如,“pots”、“stop”、“tops”互为变位词,因为每一个单词都可以通过改变其他单词中的字母的顺序来得到。

解答:

编程珠玑:sign对每一个单词排序,得到标识--->sort对标识排序--->squash输出结果

我自己的想法:sign--->hash处理,每一个标识对应一个hash插槽--->输出结果

(2)《剑指OFFER》中:给定两个单词,如何判断它们是不是变为词?

解答:

ACM解答:使用sort系统调用将两个单词分别按字母顺序排序,然后再用系统调用strcmp比较,如果为0则是变位词

《剑指OFFER》的:创建一个数组实现简单哈希表,统计字符串中每个字符出现的次数:先扫描第一个字符串,然后在哈希表中统计对应的项+1,接下来扫描第二个字符串,没扫描到一个字符,在哈希表中对应的项-1,如果扫描完第二个字符串后,哈希表中的所有的值为0,那么这两个字符串就互为变位词。

原文地址:https://www.cnblogs.com/javaadu/p/11742646.html