LeetCode 49. 字母异位词分组(Group Anagrams)

49. 字母异位词分组
49. Group Anagrams

题目描述
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
??["ate","eat","tea"],
??["nat","tan"],
??["bat"]
]

说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

LeetCode49. Group Anagrams中等

Java 实现
个人思路

import java.util.*;

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> res = new ArrayList<>();
        Map<String, List<String>> map = new HashMap<>();
        for (String str : strs) {
            String s = getString(str);
            if (map.containsKey(s)) {
                map.get(s).add(str);
            } else {
                List<String> temp = new ArrayList<>();
                map.put(s, temp);
                temp.add(str);
            }
        }
        for (List<String> list : map.values()) {
            res.add(list);
        }
        return res;
    }

    public String getString(String str) {
        char[] c = str.toCharArray();
        Arrays.sort(c);
        return new String(c);
    }
}

参考写法

import java.util.*;

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        if (strs == null || strs.length == 0) {
            return new ArrayList<>();
        }
        Map<String, List<String>> map = new HashMap<>();
        for (String s : strs) {
            char[] c = s.toCharArray();
            Arrays.sort(c);
            String str = String.valueOf(c);
            if (!map.containsKey(str)) {
                map.put(str, new ArrayList<>());
            }
            map.get(str).add(s);
        }
        return new ArrayList<>(map.values());
    }
}

相似题目

  • 242. 有效的字母异位词
  • 249. 移位字符串分组

参考资料

原文地址:https://www.cnblogs.com/hglibin/p/10926060.html

时间: 2024-10-14 18:34:10

LeetCode 49. 字母异位词分组(Group Anagrams)的相关文章

[leetcode] 49. 字母异位词分组

49. 字母异位词分组 桶排分类即可 class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<String, List<String>> map = new HashMap<>(); for (String str : strs) { map.computeIfAbsent(fun(str), k -> new ArrayList<&g

【中级算法】49. 字母异位词分组

题目: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan"], [&q

LeetCode 第49题 字母异位词分组

(一) 题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan"]

leetcode 438. 找到字符串中所有字母异位词(Find All Anagrams in a String)

目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100. 说明: 字母异位词指字母相同,但排列不同的字符串. 不考虑答案输出的顺序. 示例 1: 输入: s: "cbaebabacd" p: "abc" 输出: [0, 6] 解释: 起始索引等于 0 的子串是 "

LeetCode——字母异位词分组

Q:给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan"], [&quo

字母异位词分组

给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan"], ["

【leetcode-49】字母异位词分组

给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["ba

字母异位词分组题解Java

其实所谓异位就是指包含的字母是一样的只是位置不同.所以只要把其排序,若是字母异位词应当相等. class Solution { public List<List<String>> groupAnagrams(String[] strs) { String[] tmp = new String[strs.length]; int index = 0; for(String e : strs){ char[] a = e.toCharArray(); Arrays.sort(a); t

【leetcode 简单】 第七十题 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 说明: 你可以假设字符串只包含小写字母. 进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况? class Solution: