static int prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101};
static public int mapping(String s) {
int val = 1;
for (int i = 0; i < s.length(); i++) {
val *= prime[s.charAt(i) - 'a'];
}
return val;
}
public List<String> anagrams(String[] strs) {
Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();
for (int i = 0; i < strs.length; i++) {
if (map.get(mapping(strs[i])) == null) {
List<String> list = new ArrayList<String>();
list.add(strs[i]);
map.put(mapping(strs[i]), list);
} else {
map.get(mapping(strs[i])).add(strs[i]);
}
}
List<String> ansList = new ArrayList<String>();
for (int key : map.keySet()) {
if (map.get(key).size() > 1) {
ansList.addAll(map.get(key));
}
}
return ansList;
}
变位分词
最新推荐文章于 2023-03-20 21:21:53 发布