Anagrams(乱序字符串 )

问题

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"].

分析

用一个key为String,value为List 的map来保存数据,遍历之后把所有的string全部放进去。
这里主要问题是如何判断相等,即两个string是相同的,应该放到一个list里边。
主要是两个方法,
1.使用一个map,一个遍历一个字符串添加字符,另外一个减少字符,最后map为空为相同。
2.两个字符串转成字符数组排序后再比较。
最后结果注意,只有list的size大于1,即至少有两个时才有效。

代码

    /**
     * @param strs: A list of strings
     * @return: A list of strings
     */
    public List anagrams(String[] strs) {
        // write your code here
        Map> map=new HashMap();
        for(int i=0;i list=new ArrayList();
                list.add(strs[i]);
                map.put(temp,list);
            }
        }
        List res=new ArrayList();
        for(String s:map.keySet()){
            List list=map.get(s);
            if(list.size()>1){
                res.addAll(list);
            }
        }
        return res;
    }
}

你可能感兴趣的:(Anagrams(乱序字符串 ))