【问题标题】:How to reduce a string array to int value (length of the shortest element)如何将字符串数组减少为 int 值(最短元素的长度)
【发布时间】:2018-07-01 06:21:07
【问题描述】:

我有一个字符串数组,我需要找出最短字符串的长度。例如,对于这个字符串数组["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 方法而不是 reduce 吗?

【问题讨论】:

    标签: arrays string kotlin


    【解决方案1】:

    使用minBy

    val a = arrayOf("a", "abc", "b")
    val s = a.minBy(String::length)?.length ?: 0
    

    s 将是 1。

    【讨论】:

      【解决方案2】:

      另一种方法是将map 字符串转换为它们的length,然后选择最小的数字:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 2021-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-13
        相关资源
        最近更新 更多