zoukankan      html  css  js  c++  java
  • LeetCode 49 Group Anagrams(字符串分组)

     
    Problem:给一个字符串数组,将其中的每个字符串进行分组,要求每个分组中的各个字符串所包含的字母都相同对字母的前后顺序没有要求!
     
     
     
    使用 Map<String, List<String>> map 进行求解
     
    给定的字符串数组为 String[] strs
    1、当strs为空时返回new ArrayList<List<String>>();
    2、否则,定义上述的map,对strs数组中的每一个元素s进行判断
    3、首先将s转换为char数组  char[] ca = s.toCharArray();
    4、对ca进行排序操作, Arrays.sort(ca)
    5、将ca再转为String strKey (此时的strKey每一个字符顺序满足字典序排列即最小的那一个顺序) 
    6、判断当前map中是否包含ca,如果不包含,则map.put(keyStr, new ArrayList<String>()); 
    7、然后将当前的s放入对应的keyStr所对应的List中去
    8、最终的返回结果为new ArrayList<List<String>>(map.values())  传参数为map.values
     
    参考代码:
    package leetcode_50;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    /***
     * 
     * @author pengfei_zheng
     * 将字符串数组进行分组操作
     */
    public class Solution49 {
        public List<List<String>> groupAnagrams(String[] strs) {
            if (strs == null || strs.length == 0) return new ArrayList<List<String>>();
            Map<String, List<String>> map = new HashMap<String, List<String>>();
            for (String s : strs) {
                char[] ca = s.toCharArray();
                Arrays.sort(ca);
                String keyStr = String.valueOf(ca);
                if (!map.containsKey(keyStr)) map.put(keyStr, new ArrayList<String>());
                map.get(keyStr).add(s);
            }
            return new ArrayList<List<String>>(map.values());
        }
    }
  • 相关阅读:
    Django ORM中常用的字段类型以及参数配置
    python enumerate用法总结
    Django 模板渲染
    Django null=True和blank=True的区别
    Django下关于session的使用
    方程组法求函数的解析式
    求数列通项公式的小众方法
    不等式性质
    多项选择题
    对勾型函数
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/6548272.html
Copyright © 2011-2022 走看看