LeetCode 热题 100:02 字母异位词分组

题目描述

力扣第49题「字母异位词分组」要求如下:给定一个字符串数组 strs,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:
输入: strs = [""]
输出: [[""]]

示例 3:
输入: strs = ["a"]
输出: [["a"]]

解法

解法一:排序数组分类

对每个字符串进行排序,排序后相同的字符串即为字母异位词。

时间复杂度:O(NKlogK),其中 N 是 strs 的长度,而 K 是 strs 中字符串的最大长度。排序每个字符串的复杂度是 O(KlogK),总共要排序 N 次。

空间复杂度:O(NK),排序存储在一个 map 中,需要 O(NK) 的空间。

代码示例

import java.util.*;

public class Solution {
   
    public List<List<String>> groupAnagrams(String[] strs) {
   
        if (strs == null || strs.length == 0) return new ArrayList<>();
        Map<String, List<String>> map = 
上一篇:C++常见算法有哪些


下一篇:突破编程_C++_网络编程(TCPIP 四层模型(概述))-1 TCP/IP概述