首页 > 解决方案 > 按连续元素拆分/分组收藏

问题描述

假设我有一个包含字符的列表/数组。我如何分组/拆分/加入他们,以便我得到这样的东西?

val input = arrayOf('b', 'b', 'c', 'd', 'e', 'e', 'e')

val output = groupOrSplit(input) // ['bb', 'c', 'd', 'eee']

标签: kotlin

解决方案


在标准库中没有像你想要的那样分割字符串的函数,所以你必须自己编写这个函数:

fun splitDistinct(arr: CharArray): List<String> = arr
    .fold(ArrayList<StringBuilder>()) { acc, ch -> acc.apply {
        if (isEmpty() || last().last() != ch)
            add(StringBuilder(ch.toString()))
        else
            last().append(ch)
    }}
    .map { it.toString() }


fun main() {
    val arr = charArrayOf('b', 'b', 'c', 'd', 'e', 'e', 'e')
    println(splitDistinct(arr))
}

推荐阅读