在Go(Golang)中按频率排序字符的实例

208 阅读1分钟

概述

给出一个输入字符串。其目的是根据频率对字符串进行排序。我们必须根据字符频率的递减顺序进行排序。让我们通过一个例子来了解它

例子1

Input: "bcabcb"
Output: "bbbcca"

例二

Input: "mniff"
Output: "ffmni"

程序

下面是同样的程序

package main

import (
	"fmt"
	"sort"
)

func frequencySort(s string) string {
	stringMap := make(map[byte]int)
	lenS := len(s)
	for i := 0; i < lenS; i++ {
		stringMap[s[i]]++
	}

	itemArray := make([]item, 0)

	for key, value := range stringMap {
		i := item{
			char:      key,
			frequency: value,
		}
		itemArray = append(itemArray, i)
	}

	sort.Slice(itemArray, func(i, j int) bool {
		return itemArray[i].frequency > itemArray[j].frequency
	})

	output := ""

	for i := 0; i < len(itemArray); i++ {
		for j := 0; j < itemArray[i].frequency; j++ {
			output = output + string(itemArray[i].char)
		}
	}

	return output

}

type item struct {
	char      byte
	frequency int
}

func main() {
	output := frequencySort("bcabcb")
	fmt.Println(output)

	output = frequencySort("mniff")
	fmt.Println(output)

}

输出:

bbbcca
ffmni