{"id":857,"date":"2025-08-05T04:42:30","date_gmt":"2025-08-04T20:42:30","guid":{"rendered":"https:\/\/www.guanhaobo.cn\/?p=857"},"modified":"2025-08-05T04:42:30","modified_gmt":"2025-08-04T20:42:30","slug":"leetcode-49-%e5%ad%97%e6%af%8d%e5%bc%82%e4%bd%8d%e8%af%8d%e5%88%86%e7%bb%84","status":"publish","type":"post","link":"https:\/\/www.guanhaobo.cn\/?p=857","title":{"rendered":"LeetCode 49 &#8211; \u5b57\u6bcd\u5f02\u4f4d\u8bcd\u5206\u7ec4"},"content":{"rendered":"<h1>\u9898\u76ee\u63cf\u8ff0<\/h1>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32\u6570\u7ec4\uff0c\u8bf7\u4f60\u5c06 \u5b57\u6bcd\u5f02\u4f4d\u8bcd \u7ec4\u5408\u5728\u4e00\u8d77\u3002\u53ef\u4ee5\u6309\u4efb\u610f\u987a\u5e8f\u8fd4\u56de\u7ed3\u679c\u5217\u8868\u3002<\/p>\n<pre><code class=\"line-numbers\">\u793a\u4f8b 1:\n\n\u8f93\u5165: strs = [\"eat\", \"tea\", \"tan\", \"ate\", \"nat\", \"bat\"]\n\n\u8f93\u51fa: [[\"bat\"],[\"nat\",\"tan\"],[\"ate\",\"eat\",\"tea\"]]\n\n\u89e3\u91ca\uff1a\n\n\u5728 strs \u4e2d\u6ca1\u6709\u5b57\u7b26\u4e32\u53ef\u4ee5\u901a\u8fc7\u91cd\u65b0\u6392\u5217\u6765\u5f62\u6210 \"bat\"\u3002\n\u5b57\u7b26\u4e32 \"nat\" \u548c \"tan\" \u662f\u5b57\u6bcd\u5f02\u4f4d\u8bcd\uff0c\u56e0\u4e3a\u5b83\u4eec\u53ef\u4ee5\u91cd\u65b0\u6392\u5217\u4ee5\u5f62\u6210\u5f7c\u6b64\u3002\n\u5b57\u7b26\u4e32 \"ate\" \uff0c\"eat\" \u548c \"tea\" \u662f\u5b57\u6bcd\u5f02\u4f4d\u8bcd\uff0c\u56e0\u4e3a\u5b83\u4eec\u53ef\u4ee5\u91cd\u65b0\u6392\u5217\u4ee5\u5f62\u6210\u5f7c\u6b64\n<\/code><\/pre>\n<h1>\u9898\u76ee\u5206\u6790<\/h1>\n<p>\u4f7f\u7528\u54c8\u5e0c\u8868\u5bf9\u5b57\u7b26\u4e32\u8fdb\u884c\u5206\u7ec4\uff0c\u91cd\u70b9\u662f\u54c8\u5e0c\u7b97\u6cd5\u7684\u5b9e\u73b0<br \/>\n&#8211; \u5b57\u7b26\u4e32\u5185\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\uff1a\u65f6\u95f4\u590d\u6742\u5ea6 <code>O(n*k*log(k))<\/code><br \/>\n&#8211; \u5b57\u7b26\u4e3226\u4e2a\u5b57\u6bcd\u5206\u522b\u8ba1\u6570\uff1a\u65f6\u95f4\u590d\u6742\u5ea6<code>O(n*k)<\/code><\/p>\n<p>n \u662f\u5b57\u7b26\u4e32\u4e2a\u6570\uff0ck\u662f\u5355\u4e2a\u5b57\u7b26\u4e32\u957f\u5ea6<\/p>\n<h1>Java<\/h1>\n<pre><code class=\"language-java line-numbers\">public List&lt;List&lt;String&gt;&gt; groupAnagrams(String[] strs) {\n    HashMap&lt;String, List&lt;String&gt;&gt; map = new HashMap&lt;&gt;();\n    for (String str : strs) {\n        String key = hash(str);\n        if (map.get(key) == null) {\n            map.put(key, new ArrayList&lt;&gt;());\n        }\n        List&lt;String&gt; list = map.get(key);\n        list.add(str);\n    }\n    return map.values().stream().toList();\n}\n\n\/\/    private String hash(String str) {\n\/\/        char[] array = str.toCharArray();\n\/\/        Arrays.sort(array);\n\/\/        return Arrays.toString(array);\n\/\/    }\n\nprivate String hash(String str) {\n    StringBuilder builder = new StringBuilder();\n    int[] num = new int[26];\n    for (int i = 0; i &lt; str.length(); i++) {\n        num[str.charAt(i) - 'a']++;\n    }\n    for (char ch = 'a'; ch &lt;= 'z'; ch++) {\n        int index = ch - 'a';\n        if (num[index] &gt; 0) {\n            builder.append(ch);\n            builder.append(num[index]);\n        }\n    }\n    return builder.toString();\n}\n<\/code><\/pre>\n<h1>Kotlin<\/h1>\n<pre><code class=\"language-kotlin line-numbers\">    fun groupAnagrams(strs: Array&lt;String&gt;): List&lt;List&lt;String&gt;&gt; {\n        val map = HashMap&lt;String, ArrayList&lt;String&gt;&gt;()\n        for (str in strs) {\n            val key = hash(str)\n            if (map[key] == null) {\n                map[key] = ArrayList()\n            }\n            map[key]?.add(str)\n        }\n        return map.values.toList()\n    }\n\n\/\/    fun hash(str: String): String {\n\/\/        val array = str.toCharArray()\n\/\/        Arrays.sort(array)\n\/\/        return Arrays.toString(array)\n\/\/    }\n\n    fun hash(str: String): String {\n        val builder = StringBuilder()\n        val num = IntArray(26)\n        for (ch in str) {\n            num[ch - 'a']++\n        }\n        for (i in 0 until 26) {\n            if (num[i] &gt; 0) {\n                builder.append('a' + i)\n                builder.append(num[i])\n            }\n        }\n        return builder.toString()\n    }\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u9898\u76ee\u63cf\u8ff0 \u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32\u6570\u7ec4\uff0c\u8bf7\u4f60\u5c06 \u5b57\u6bcd\u5f02\u4f4d\u8bcd \u7ec4\u5408\u5728\u4e00\u8d77\u3002\u53ef\u4ee5\u6309\u4efb\u610f\u987a\u5e8f\u8fd4\u56de\u7ed3\u679c\u5217\u8868\u3002 \u793a\u4f8b 1: \u8f93\u5165: [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[20,74,73],"class_list":["post-857","post","type-post","status-publish","format-standard","hentry","category-algo","tag-leetcode","tag-74","tag-73"],"_links":{"self":[{"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/posts\/857","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=857"}],"version-history":[{"count":1,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/posts\/857\/revisions"}],"predecessor-version":[{"id":858,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=\/wp\/v2\/posts\/857\/revisions\/858"}],"wp:attachment":[{"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.guanhaobo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}