码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode Anagrams

时间:2016-05-25 02:03:26      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

(记得import java.util.HashMap及Arrays, 

首先字符串若为空或者数量为零, 则返回一个空的LinkedList)

1. 把string变为char数组, 再进行排序, 之后重新合为一个string叫mark

2. 建循环, 若hashmap(map)没有mark这个key, 就建一个LinkedList或ArrayList(放字符串的), 再把此哈希值(mark, LinkedList)放入哈希表map

3. 获取(或者已有mark)此时哈希表map里mark对应的value(LinkedList), 再将此时循环的这个字符串放入此时mark对应的LinkedList里

4. 将哈希表map里所有的mark及对应的value都找出来, 若value的表里的字符串的数量大于一的那个LinkedList, 则全都放入一个新的LinkedList(answer)里

5. 将此answer返回

public class Solution {
    /**
     * @param strs: A list of strings
     * @return: A list of strings
     */
    public List<String> anagrams(String[] strs) {
        if(strs == null) return new LinkedList<String>();
        if(strs.length == 0) return new LinkedList<String>();
        
        HashMap<String, List<String>> map = new HashMap<String, List<String>>();
        for(int i = 0; i < strs.length; i++){
            char[] arr = strs[i].toCharArray();
            Arrays.sort(arr);
            String mark = new String(arr);
            
            if(!map.containsKey(mark)){
                List<String> list = new LinkedList<String>();
                map.put(mark, list);
            }
            List<String> l = map.get(mark);
            l.add(strs[i]);
        }
        
        List<String> answer = new LinkedList<String>();
        for(String k : map.keySet()){
            List<String> list = map.get(k);
            if(list.size() > 1){
                answer.addAll(list);
            }
        }
        return answer;
        // write your code here
    }
}

 

LintCode Anagrams

标签:

原文地址:http://www.cnblogs.com/LittleAlex/p/5525640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!