Anagrams

ref http://www.cnblogs.com/springfor/p/3874667.html

高亮处"如果一个sorted word是在HashMap里面存在过的,说明这个词肯定是个变形词,除了把这个词加入到返回结果中,还需要把之前第一个存进HashMap里面的value存入result中。"

 

    public ArrayList<String> anagrams(String[] strs) {
        // 有一个关键点就是遇到第一个变形词的处理方式
        ArrayList<String> res = new ArrayList<String>();
        if(strs==null || strs.length==0) return res;
        HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>();
        
        for(String s: strs){
            char[] schar = s.toCharArray();
            Arrays.sort(schar);
            String t = new String(schar);
            if(hm.containsKey(t)){
                if(hm.get(t).size()==1){
                    res.add(hm.get(t).get(0));
                }
                hm.get(t).add(s);
                res.add(s);
            }else{
                ArrayList<String> tmp = new ArrayList<String>();
                tmp.add(s);
                hm.put(t,tmp);
            }
        }
        return res;
    }

 

posted @ 2015-04-23 04:50  世界到处都是小星星  阅读(142)  评论(0编辑  收藏  举报