看了标准答案,说白了这道题的本质就是建立映射。而要使用哈希表来构建这个映射关系。哈希表是现成的,要会使用。最关键的问题是,每给一个字符串就要为它构建一个"密码",而这个密码就是哈希表中的key。这个密码要有这样的性质:1.可以区别不同的数值。2.可以对字符串中字符顺序不敏感。
private int getHash(int[] count) {
int hash = 0;
int a = 378551;
int b = 63689;
for (int num : count) {
hash = hash * a + num;
a = a * b;
}
return hash;
}----<<九章算法的标答>>
num记录一个字母出现的次数。count保存字符串中字母的信息。
网友评论