golang - как сортировать строку или [] байт?
некоторая функция может сортировать строку или [] byte:
"bcad" to "abcd"
or
[]byte("bcad") to []byte("abcd")
строка только из букв.
если буквы и цифры?
Я нашел пакет сортировки, но не функцию a want.
спасибо.
2 ответов
Кажется расточительным создавать строку для каждого символа только для 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)
}
вы можете преобразовать строку в срез строк, отсортировать его и преобразовать обратно в строку:
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