kotlin - 按连续元素拆分/分组收藏
问题描述
假设我有一个包含字符的列表/数组。我如何分组/拆分/加入他们,以便我得到这样的东西?
val input = arrayOf('b', 'b', 'c', 'd', 'e', 'e', 'e')
val output = groupOrSplit(input) // ['bb', 'c', 'd', 'eee']
解决方案
在标准库中没有像你想要的那样分割字符串的函数,所以你必须自己编写这个函数:
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))
}
推荐阅读
- javascript - AsyncStorage:搜索值
- c# - Unity Intellisense 不起作用(解决方案 1,杂项文件问题)
- hugo - 错误 blogdown::serve_site 学术模板
- javascript - 您如何根据选择的单选按钮调用不同的 javascript 函数?
- java - 将 Kotlin 类转换为 Java
- javascript - 尝试链接到另一个页面时,Javascript 事件侦听器不起作用
- shopify - Shopify - 是否可以使用输入框更改产品的预览?
- javascript - 如何为位于数组内的值创建按钮,并且同一数组位于另一个数组内?
- python - 如何使用 python qrcode 库生成 QR 码到图像?
- sql - 取消旋转两个单独的列