LeetCode 104 Anagrams

来源:互联网 发布:硬盘文件加密软件 编辑:程序博客网 时间:2024/05/21 09:59
Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

分析:

anagram就是异形词,就是有相同的字母组成,但是顺序不同形成的单词。

首先,判断异形词可以通过先排序后相等的方式,

其次,用HashMap把异形词组织起来,

最后,把所以异形词组按顺序加入结果集。

public class Solution {    public List<String> anagrams(String[] strs) {        List<String> res = new ArrayList<String>();        if(strs==null || strs.length==0)            return res;        HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();        for(String item : strs){            char[] charArr = item.toCharArray();            Arrays.sort(charArr);            String newStr = new String(charArr);            if(map.containsKey(newStr)){                map.get(newStr).add(item);            }else{                ArrayList<String> list = new ArrayList<String>();                list.add(item);                map.put(newStr, list);            }        }        for(ArrayList<String> list : map.values()){            if(list.size() > 1)                res.addAll(list);        }        return res;    }}


0 0