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

Я пытался:

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

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

14
Craig1123 11 Апр 2019 в 19:29

2 ответа

Лучший ответ

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

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

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

9
Moira 11 Апр 2019 в 17:15

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

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

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

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

Тогда вы сможете:

println("hearty".alphabetized())
4
Kevin Coppock 11 Апр 2019 в 16:36