gpt4 book ai didi

arrays - 如何使用Kotlin检查字符串数组是否按字母顺序排序?

转载 作者:行者123 更新时间:2023-12-04 16:57:58 30 4
gpt4 key购买 nike

给了我一个字符串列表,我需要看看它们是否按字母顺序排列。

我知道我需要使用for循环并检查每个字符串的第一个字符,但是我不知道如何从那里开始。

for (item in array)
println(item[0])

例如 ["adam", "ben", "chloe"]应该返回 true

同样,对于 ["ben", "adam", "chloe"],应返回 false

最佳答案

UPD:自Kotlin 1.2起,可以使用以下功能:

最有效的变体,创建最少数量的中间对象:

listOf(1, 2, 3).asSequence().zipWithNext { a, b -> a <= b }.all { it }

效率略低的变体:
listOf(1, 2, 3).asSequence().windowed(2).all { (a, b) -> a <= b }

它的效率略低,因为它会为原始列表的每个元素创建中间 List(a, b)

@Billbucket和@AshishChaudhary在下面的答案中列出了这两种变体。

旧答案,适用于Kotlin的早期版本:

这是一个类轮:
val a = listOf("a", "b", "c")
a.zip(a.drop(1)).all { (a, b) -> a <= b }
// true

解释:
a.zip(a.drop(1))返回成对的相邻元素。如果每对中的第一个元素小于或等于下一个,则数组按顺序排列。

如果要提高性能,可以先将数组包装为延迟序列。在这种情况下,数组将不会被复制:
a.asSequence().let { it.zip(it.drop(1)).all { (a, b) -> a < b }  }

整个过程是 O(N)(单次通过数组),它是此任务的最佳选择。

关于arrays - 如何使用Kotlin检查字符串数组是否按字母顺序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47296389/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com