【问题标题】: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"]
]

【问题讨论】:

  • 这不是代码编写服务。你试过什么?包括您的代码。你遇到了什么问题?

标签: arrays go anagram


【解决方案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)
}

【讨论】:

    猜你喜欢
    • 2015-10-07
    • 2022-01-19
    • 2012-01-27
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多