[Amazon] Anagrams

来源:互联网 发布:怎么弄公司企业域名 编辑:程序博客网 时间:2024/06/06 10:53

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

 Notice

All inputs will be in lower-case

Example

Given ["lint", "intl", "inlt", "code"], return ["lint", "inlt", "intl"].

Given ["ab", "ba", "cd", "dc", "e"], return ["ab", "ba", "cd", "dc"].

public class Solution {    /**     * @param strs: A list of strings     * @return: A list of strings     */    public List<String> anagrams(String[] strs) {        List<String> result=new ArrayList<>();        if(strs==null || strs.length==0){            return result;        }                 Map<String,List<String>> map=new HashMap<>();        for(int i=0;i<strs.length;i++){            char[] arr=strs[i].toCharArray();                     //必须转化为数组,数组才可以sort            Arrays.sort(arr);            String s=String.valueOf(arr);            if(!map.containsKey(s)){                List<String> list=new ArrayList<>();                list.add(strs[i]);                                //list里添加的时候要添加原字符串                map.put(s,list);                                  //但是map的key得是一样的,因此得是sort之后的            }else{                map.get(s).add(strs[i]);            }        }                for(String s:map.keySet()){            if(map.get(s).size()>=2){                for(int i=0;i<map.get(s).size();i++){                    result.add(map.get(s).get(i));                }            }        }        return result;    }}


原创粉丝点击