对具有相同组成的字符串进行分组

Posted

技术标签:

【中文标题】对具有相同组成的字符串进行分组【英文标题】:Grouping strings with same composition 【发布时间】:2021-04-23 15:20:20 【问题描述】:

我想使用 Go 对具有相同组合的字符串进行分组。

假设我有这样的字符串数组:

['kita', 'atik', 'tika', 'aku', 'kia', 'makan', 'kua']

预期的输出是这样的

[
 ["kita", "atik", "tika"],
 ["aku", "kua"],
 ["makan"],
 ["kia"]
]

【问题讨论】:

这不是代码编写服务。你试过什么?包括您的代码。你遇到了什么问题? 【参考方案1】:

这应该可以使用地图来实现:

package main

import (
    "log"
    "sort"
)

func main() 
    words := []string"kita", "atik", "tika", "aku", "kia", "makan", "kua"
    refs := map[string][]string

    for _, word := range words 
        // normalizing word
        r := []rune(word)
        sort.Slice(r, func(i, j int) bool  return r[i] < r[j] )
        sortedWord := string(r)

        // appending in the normalized word map
        refs[sortedWord] = append(refs[sortedWord], word)
    

    // transforming into a slice of slices
    result := [][]string
    for _, item := range refs 
        result = append(result, item)
    

    log.Println(result)

【讨论】:

以上是关于对具有相同组成的字符串进行分组的主要内容,如果未能解决你的问题,请参考以下文章

如何按第一个字符串对字符串对的向量进行分组?

对具有重复项(字符串值)的列进行分组

是否有代码对列中包含的相似单词进行分组

Python:如何按对象的特征或属性对对象列表进行分组? [复制]

对具有相同 zoneID 的相邻单元格进行分组,MATLAB

VS Code:对具有相同名称和不同扩展名的文件进行分组