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
Ответ 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