golang - как сортировать строку или [] байт?

Некоторая функция может сортировать строку или [] байт:

"bcad" to "abcd"
or
[]byte("bcad") to []byte("abcd")

Строка содержит только буквы.

если буквы и цифры?

Я нашел пакет сортировки, но не функцию.

Благодарю.

Ответ 1

Мне кажется, расточительно создавать строку для каждого персонажа, чтобы Join ним.

Здесь один, который немного менее расточительный, но с большим количеством плиты котла. детская площадка://XEckr_rpr8

type sortRunes []rune

func (s sortRunes) Less(i, j int) bool {
    return s[i] < s[j]
}

func (s sortRunes) Swap(i, j int) {
    s[i], s[j] = s[j], s[i]
}

func (s sortRunes) Len() int {
    return len(s)
}

func SortString(s string) string {
    r := []rune(s)
    sort.Sort(sortRunes(r))
    return string(r)
}

func main() {
    w1 := "bcad"
    w2 := SortString(w1)

    fmt.Println(w1)
    fmt.Println(w2)
}

Ответ 2

Вы можете преобразовать строку в фрагмент строк, отсортировать ее и преобразовать в строку:

package main

import (
    "fmt"
    "sort"
    "strings"
)

func SortString(w string) string {
    s := strings.Split(w, "")
    sort.Strings(s)
    return strings.Join(s, "")
}

func main() {
    w1 := "bcad"
    w2 := SortString(w1)

    fmt.Println(w1)
    fmt.Println(w2)
}

Это печатает:

bcad
abcd

Попробуйте: http://play.golang.org/p/_6cTBAAZPb