Menu
CoddyTech

Group Anagrams

中等哈希排序python iconjava iconcpp iconc iconjs icon+10

给你一个单词列表 strs。如果一个单词可以通过重新排列另一个单词的字母得到,并且每个字母的使用次数都相同,那么这两个单词互为字母异序词。将每个单词与它所有的字母异序词分到一组,并为每组返回一个字符串:将组内的单词按字典序排列,用单个空格连接。各组按照组内第一个单词的字典序排列。

重复的单词在其组内列出两次,没有字母异序词的单词单独成组。字典序是指按字典中的顺序排列:aab 排在 ab 前面,ab 排在 abc 前面。

函数

groupAnagrams(strs: string-array) → string-array
strsstring-array
要分组的单词,只使用小写字母
返回值string-array
每组一个字符串:将其中的单词排序后用空格连接,各组按首个单词排序

约束条件

  • 1 ≤ strs.length ≤ 4000
  • 1 ≤ strs[i].length ≤ 8
  • 每个单词都只包含小写英文字母。

示例

输入
strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]
输出
["apple", "enlist listen silent", "notes onset stone tones"]
解释
enlist、listen 和 silent 都各包含一次 e、i、l、n、s 和 t。notes、onset、stone 和 tones 都包含 e、n、o、s 和 t。apple 与其他单词都不匹配,并且按首字母排序时排在前面。
challenge icon

进阶

如果单词可以包含任意 Unicode 字符,哪种键,无论是排序后的字母还是字母计数,仍然有效?你会如何修改它?

重置代码
def groupAnagrams(strs):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]

预期输出

["apple", "enlist listen silent", "notes onset stone tones"]