Anagrams

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

思路: anagrams是变化词,string中字符变化,形成新的string。则所有的angrams中字符相同,字符个数相同

所以需要判断是否是anagrams,用排序。mlogm,并且遍历n。

java 代码:

  1. public List<String> anagrams(String[] strs) {
  2. List<String> res = new ArrayList<String>();
  3. int len = strs.length;
  4. Map<String,Integer> mp = new HashMap<String,Integer>();
  5. String[] new_strs = new String[len];  len个String的引用
  6. for(int i=0;i<len;i++) {
  7. char tmp[] = strs[i].toCharArray();
  8. Arrays.sort(tmp);
  9. new_strs[i] = new String(tmp);
  10. if(mp.containsKey(new_strs[i])) {
  11. if(mp.get(new_strs[i])>=0) {
  12. res.add(strs[mp.get(new_strs[i])]);  // 处理第一个满足条件的angrams
  13. mp.put(new_strs[i],-1);
  14. }
  15. res.add(strs[i]);
  16. } else {
  17. mp.put(new_strs[i],i);
  18. }
  19. }
  20. return res;
  21. }
posted @ 2014-07-24 22:56  purejade  阅读(99)  评论(0)    收藏  举报