leetcode 49. Group Anagrams (Java实现)

原题:

Given an array of strings, group anagrams together.

For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
Return:

[
  ["ate", "eat","tea"],
  ["nat","tan"],
  ["bat"]
]
题目大意:给出一个字符串数组,将其按照组成字母相同这一条件来分组,即组成字符串的字符完全相同的字符串分成一组。

解题思路:

         采用HashMap<String,List<String>>,每次讲读入的字符串在map中查找(这里需将读入的字符串转化成数组后用sort()来排列好)。

代码如下:

public class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> list = new ArrayList<List<String>>();
        int len = strs.length;
        if(len<1) return list;
        Map<String,List<String>> map = new HashMap<String,List<String>>();
        String tmp = "";
        for(int i=0;i<len;i++){
        	tmp = strs[i];
        	char[] arrayOfString = tmp.toCharArray();
        	Arrays.sort(arrayOfString);
        	tmp = new String(arrayOfString);
        	if(map.containsKey(tmp)){
        		map.get(tmp).add(strs[i]);
        	}else{
        		List<String> item = new ArrayList<String>();
        		item.add(strs[i]);
        		map.put(tmp, item);
        	}
        }
        for (List<String> value : map.values()) {         	  
            list.add(value);           
        } 
        return list;
    }
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值