由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一个Anagram的参考程序
相关主题
问一下OJ的Anagrams那道题Facebook电话面试总结
杯具!越改越差Leetcode第30题真心不容易
请问我写的这个代码哪可以改进一下关于anagram的老题?
F家电面:group AnagramseBay SDET 电面面经
问个anagram的问题Uber 电面 面经
LC anagrams题目有问题吧?facebook telephone interview from careercup
Anagrams有面试碰到过么?一道G家店面题
leetcode这题怎么我没读懂,求助问一个 String array sorting 的题。
相关话题的讨论汇总
话题: string话题: int话题: arraylist话题: hash话题: count
进入JobHunting版参与讨论
1 (共1页)
e*******s
发帖数: 1979
1
Given an array of strings, return all groups of strings that are anagrams.
All inputs will be in lower-case
Given ["lint", "intl", "inlt", "code"], return ["lint", "inlt", "intl"].
Given ["ab", "ba", "cd", "dc", "e"], return ["ab", "ba", "cd", "dc"].
9章的参考程序如下, 他给每一个string换成26长度的int array. 然后用这个array生
成一个hash code. 问题是这个hashcode能够唯一对应一个anagram么. 不同的anagram
有没有对应同一个hashcode的可能 (考虑int overflow的情况下).
public class Solution {
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;
}

public ArrayList anagrams(String[] strs) {
ArrayList result = new ArrayList();
HashMap> map = new HashMap ArrayList>();
for (String str : strs) {
int[] count = new int[26];
for (int i = 0; i < str.length(); i++) {
count[str.charAt(i) - 'a']++;
}
int hash = getHash(count);
if (!map.containsKey(hash)) {
map.put(hash, new ArrayList());
}
map.get(hash).add(str);
}
for (ArrayList tmp : map.values()) {
if (tmp.size() > 1) {
result.addAll(tmp);
}
}
return result;
}
}
Y****n
发帖数: 7
2
代码看着有点奇怪,既然已经设置了int[] count, 每次将str的每一个字母放进去之后
,然后从0到26依次搜集这些字母,遍组成了一个hash code,这样互为anagram的两个
字符串将拥有相同的hash code. 上面求解hash的 a *= b 存在溢出的风险。
e*******s
发帖数: 1979
3
我也觉得 理论上是不能保证的溢出了还能保证unique.
一个26长度的int数组有INT_MAX^26种组合方式
远远超出int的范围.
就算每个int的范围是0~2 3^26也超出int的范围了.
我发现他们家贴的好多答案都简单粗暴的不负责任啊.

【在 Y****n 的大作中提到】
: 代码看着有点奇怪,既然已经设置了int[] count, 每次将str的每一个字母放进去之后
: ,然后从0到26依次搜集这些字母,遍组成了一个hash code,这样互为anagram的两个
: 字符串将拥有相同的hash code. 上面求解hash的 a *= b 存在溢出的风险。

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一个 String array sorting 的题。问个anagram的问题
Google 需要bug free 么?LC anagrams题目有问题吧?
LC: anagram为何忽略single element?Anagrams有面试碰到过么?
google phone interviewleetcode这题怎么我没读懂,求助
问一下OJ的Anagrams那道题Facebook电话面试总结
杯具!越改越差Leetcode第30题真心不容易
请问我写的这个代码哪可以改进一下关于anagram的老题?
F家电面:group AnagramseBay SDET 电面面经
相关话题的讨论汇总
话题: string话题: int话题: arraylist话题: hash话题: count