Как отсортировать строку по алфавиту в Kotlin - PullRequest
3 голосов
/ 11 апреля 2019

Я хочу изменить порядок строки "hearty" в алфавитном порядке: "aehrty"

Я пробовал:

val str = "hearty"
val arr = str.toCharArray()
println(arr.sort())

Это выдает ошибку.Я также попробовал метод .split("") с .sort().Это также вызывает ошибку.Исследование этого ни к чему не приведет.

Ответы [ 2 ]

5 голосов
/ 11 апреля 2019

Вам нужно использовать sorted() и после этого joinToString, чтобы вернуть массив обратно в строку:

val str = "hearty"
val arr = str.toCharArray()
println(arr.sorted().joinToString("")) // aehrty

Примечание: sort() изменит массив, к которому он был вызван, sorted() вернет новый отсортированный массив, оставив исходный нетронутым.

3 голосов
/ 11 апреля 2019

Итак, ваша проблема в том, что CharArray.sort() возвращает Unit (как это делает сортировка массива на месте).Вместо этого вы можете использовать sorted(), который возвращает List<Char>, или вы можете сделать что-то вроде:

str.toCharArray().apply { sort() }

Или, если вы просто хотите вернуть строку:

fun String.alphabetized() = String(toCharArray().apply { sort() })

ТогдаВы можете сделать:

println("hearty".alphabetized())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...