Anagrams

来源:互联网 发布:java web文件上传 编辑:程序博客网 时间:2024/06/06 05:03

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

Note: All inputs will be in lower-case.

Show Tags
思路:Every anagrams have the same sorted character arrays. So, we  create a hashmap to storage and the key is sorted character array and the value is anagrams list.
At last, we use iterator to add list to the result.
易错点: 添加进 map 时候, 注意 list 是否已经创建。 还有 最后 如果有anagram  list.size() > 1 才能添加入结果。

public class Solution {    public List<String> anagrams(String[] strs) {        List<String> ret = new ArrayList<String>();        if(strs.length < 1)            return ret;        HashMap<String, List<String>> map = new HashMap<String, List<String>>();        for(String s : strs){            char[] arr = s.toCharArray();            Arrays.sort(arr);            String key = new String(arr);            if(map.containsKey(key)){                List<String> list = map.get(key);                list.add(s);            }else{                List<String> list = new ArrayList<String>();                list.add(s);                map.put(key, list);            }        }        Iterator<String> it = map.keySet().iterator();        while(it.hasNext()){            List<String> list = map.get(it.next());            if(list.size() > 1)                ret.addAll(list);        }        return ret;    }}


0 0
原创粉丝点击