如何将字符串数组减少为int值(最短元素的长度)

djm*_*.im 0 arrays string kotlin

我有一个String数组,我需要找到最短字符串的长度.例如,对于这个字符串数组,["abc", "ab", "a"]我应该得到值1.

我编写了获取字符串数组并返回int值的方法

val minLength = fun(strs: Array<String>): Int {
    var minLength = strs[0].length
    for (index in 1..strs.size - 1) {
        val elemLen = strs[index].length
        if (minLength > elemLen) {
            minLength = elemLen
        }
    }
    return minLength
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用reduce方法

val minLengthReduce = strs.reduce ({
    str1, str2 ->
    if (str1.length < str2.length) str1 else str2
}).length
Run Code Online (Sandbox Code Playgroud)

是否可以直接从reduce()方法而不是字符串值获取int 值?

我发现这个问题,大约reducefold方法.

我应该使用折叠方法代替减少?

Wil*_*zel 8

使用minBy

val a = arrayOf("a", "abc", "b")
val s = a.minBy(String::length)?.length ?: 0
Run Code Online (Sandbox Code Playgroud)

s将是1.


pwo*_*laq 5

另一种方法是将map其串起来length,然后选择最小的数字:

val strs = arrayOf("abc", "ab", "ab")
val min = strs.map(String::length).min()
Run Code Online (Sandbox Code Playgroud)