Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
这道题的意思是返回含有相同字母的字符串
First, I don't know the real meaning of this problem. Next ,After searching the answer through Internet,I also feel puzzled.
Last, I have no experience about the function of HashMap or Hashtable.
I feel exhausted about the current of my attitude. Anyway What I should do is try my best.
Fighting!
慢慢积累
char[] aChar = a.toCharArray();
add是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素,而addAll是传入一个List,将此List中的所有元素加入到当前List中,也就是当前List会增加的元素个数为传入的List的大小
不多说了,今天要再刷3道题,然后写论文!
下面附上代码:
public List<String> anagrams(String[] strs) { ArrayList<String> result = new ArrayList<String>(); HashMap<String, ArrayList<String>> ht = new HashMap<String, ArrayList<String>>(); for(int i =0;i<strs.length;i++){ String sor = sorted(strs[i]); ArrayList<String> val = ht.get(sor); if(val!=null){ val.add(strs[i]); } else{ val = new ArrayList<String>(); val.add(strs[i]); ht.put(sor,val); } } Set<String> set = ht.keySet(); for(String s : set){ ArrayList<String> val = ht.get(s); if(val.size()>1){ result.addAll(val); } } return result; } public String sorted(String a){ char[] aChar = a.toCharArray(); Arrays.sort(aChar); return new String(aChar); }