leetcode 60: Anagrams
AnagramsMar
19 '12
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
public class Solution {
public ArrayList<String> anagrams(String[] strs) {
// Start typing your Java solution below
// DO NOT write main() function
Map<String, LinkedList<String>> map = new HashMap<String, LinkedList<String>>();
ArrayList<String> rel = new ArrayList<String>();
for( int i=0; i<strs.length; i++) {
char[] c = strs[i].toCharArray();
Arrays.sort(c);
String s = new String(c); //!!!!alert!!! super important. != t.toString(){ [C@6e1408 }
if( map.containsKey(s) ) {
map.get(s).add( strs[i]); // add() will return false or true;
} else {
LinkedList<String> ll = new LinkedList<String>();
ll.add( strs[i] );
map.put(s, ll);
}
}
for(LinkedList<String> ll : map.values() ) {
if( ll.size() > 1) {
rel.addAll( ll );
}
}
return rel;
}
}
public class Solution {
public ArrayList<String> anagrams(String[] strs) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList<String> rel = new ArrayList<String>();
if( strs.length <=1) return rel;
Map<String, ArrayList<String> > ana = new HashMap<String, ArrayList<String> >();
int sz = strs.length;
for(int i=0; i<sz; i++) {
char[] ch = strs[i].toCharArray();
Arrays.sort(ch);
String key = new String( ch );
if( ana.containsKey(key) ) {
ana.get(key).add( strs[i] );
} else {
ArrayList<String> temp = new ArrayList<String>();
temp.add( strs[i] );
ana.put(key, temp);
}
}
for(String str : ana.keySet() ) {
if( ana.get(str).size() >1){
rel.addAll( ana.get(str) );
}
}
return rel;
}
}
浙公网安备 33010602011771号