【leetcode-49】Anagrams(java)

来源:互联网 发布:apache cxf 日志 配置 编辑:程序博客网 时间:2024/05/16 20:30

问题描述:
Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

首先,先明白什么叫anagrams,比如eat\ate\tea,这三种,字符一样,但是顺序不同,就叫anagrams。

代码如下:

     public ArrayList<String> anagrams(String[] strs) {         //key:SortedStr value:ArrayListStr         HashMap<String, ArrayList<String>> maps = new HashMap<String, ArrayList<String>>();         ArrayList<String> result = new ArrayList<String>();         char[] tmpChar;         String tmpStr;         ArrayList<String> tmpArrayList;         for(int i = 0;i<strs.length;i++){             tmpChar = strs[i].toCharArray();             Arrays.sort(tmpChar);             tmpStr = new String(tmpChar);             if(maps.containsKey(tmpStr)){                 tmpArrayList = maps.get(tmpStr);                 tmpArrayList.add(strs[i]);             }else {                ArrayList<String> strings = new ArrayList<String>();                strings.add(strs[i]);                maps.put(tmpStr, strings);            }         }         Set<String> sets = maps.keySet();         for(String str:sets){             if((tmpArrayList=maps.get(str)).size()>1)                 result.addAll(tmpArrayList);         }         return result;     }
0 0
原创粉丝点击