题目的意思是给出一组单词,找出所有的单词是混乱的(
Anagrams
)
Anagrams
的意思,举个例子,单词abc, 那么他的Anagrams
单词可以是bca,cab,cba,acb,bac,
一个的单词的anagrams是很多的,但是他们排完序后的确实唯一的,
对已每一个单词,将其进行升序排序,对排序后的单词进行hash,value
为排序前单词的集合
<span style="font-size:18px;">public class Solution {
public List<String> anagrams(String[] strs) {
List<String> ans = new ArrayList<>();
HashMap<String, List<String>> map = new HashMap<>();
if(strs != null){
for(String s : strs){
char[] chs = s.toCharArray();
Arrays.sort(chs);
String nStr = new String(chs);
List<String> l = map.get(nStr);
if(l == null){
l = new ArrayList<>();
map.put(nStr, l);
}
l.add(s);
}
for(String s : map.keySet()){
List<String> l = map.get(s);
if(l.size() > 1) ans.addAll(l);
}
}
return ans;
}
}</span>