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

时间:2018-01-22 15:09:00

标签: 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
}

另一种方法是使用reduce方法

val minLengthReduce = strs.reduce ({
    str1, str2 ->
    if (str1.length < str2.length) str1 else str2
}).length

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

我发现了question关于reducefold方法的问题。

我应该使用fold方法来减少吗?

2 个答案:

答案 0 :(得分:8)

使用minBy

'name = :name, address = :address, salary = :salary, tax = :tax, age = :age'

将是1。

答案 1 :(得分:4)

另一种方法是将map字符串添加到length,然后选择最小的数字:

val strs = arrayOf("abc", "ab", "ab")
val min = strs.map(String::length).min()