LintCode 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中

原创
2017/06/13 22:54
阅读数 124

public class Solution {
    /**
     * @param strs: A list of strings
     * @return: A list of strings
     */
     public List<String> anagrams(String[] strs) {  
        // write your code here  
        if(strs.length>1){
            List<String> list = new ArrayList<String>(); 
            Map<String,Integer> map = new HashMap<String,Integer>();
            for(int i=0;i<strs.length;i++){
                String a=strs[i];
                char[] s1 = a.toCharArray();
                Arrays.sort(s1);
                String ss1= new String(s1);
                if(!map.containsKey(ss1)){
                    map.put(ss1, i);
                } else {
                    int id = map.get(ss1);
                    if(id != -1) {
                        list.add(strs[id]);
                    }
                    list.add(strs[i]);
                    map.put(ss1, -1);
                }
            }
            return list;
        }
        return null; 
    }  
}

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部