zoukankan      html  css  js  c++  java
  • LeetCode49. 字母异位词分组

    一、题目描述

    ☆☆☆☆二、解法

    方法1:先排序,再判断。      “当且仅当它们的排序字符串相等时,两个字符串是字母异位词。”

    方法2:按计数分类。       “当且仅当它们的字符计数(每个字符的出现次数)相同时,两个字符串是字母异位词。”

    class Solution {
        public List<List<String>> groupAnagrams(String[] strs) {
            /**
             *  方法1:先排序,再判断.  时间复杂度O(NKlogK), 空间复杂度 O(NK)
             *      思路:维护一个Map,每个键是一个排序字符串,值是字符串列表list
             *      复杂度分析:N是strs的长度,K是strs中字符串的最大长度。外部循环O(N),内部排序O(KlogK)
             */
            if (strs == null || strs.length == 0) return new ArrayList<>();
            Map<String, List<String>> map = new HashMap<>();
            for (int i = 0; i < strs.length; i++) {
                char[] chars = strs[i].toCharArray();
                Arrays.sort(chars);
                String key = String.valueOf(chars);
                if (!map.containsKey(key)) {
                    map.put(key, new ArrayList<>());
                }
                map.get(key).add(strs[i]);
            }
            return new ArrayList<List<String>>(map.values());
            /**
             *  方法2:统计每个字母的个数
             *      如果生成新的字符串相同,说明是字母异位词
             */
            /*
            if (strs == null || strs.length == 0) return new ArrayList<>();
            Map<String, List<String>> map = new HashMap<>();
            char[] chars = new char[26];
            for (String s : strs) {
                Arrays.fill(chars, '0'); // 每次初始化为'0'
                for (char c : s.toCharArray()) {
                    chars[c - 'a'] ++;
                }
                String key = String.valueOf(chars); // 新生成的乱码字符串
                if (!map.containsKey(key)) {
                    map.put(key, new ArrayList<>());
                }
                map.get(key).add(s);
            }
            return new ArrayList<List<String>>(map.values());
            */
        }
    }
  • 相关阅读:
    Mongo 应用查询
    Rocket MQ 问题排查命令
    阿里云部署杂记-节约时间
    linux shell 杂
    垃圾回收算法学习
    Hbase数据读写流程
    TCP 协议相关
    Netty
    ELK
    MiniGUI
  • 原文地址:https://www.cnblogs.com/HuangYJ/p/14117566.html
Copyright © 2011-2022 走看看