gpt4 book ai didi

scala - 使用 Scala 集合方法帮助将 [0,0,0,1,1,1,1,0,0,1,1] 列表转换为 [3,4,2,2]

转载 作者:行者123 更新时间:2023-12-04 17:10:01 25 4
gpt4 key购买 nike

所以我有一个 0 和 1 的列表,我想找到每个元素的计数并将其输出到列表中。我可以想到用函数来做的递归方式,但是有没有任何帮助函数可以帮助转换它?

我相信 groupBy 可能很有用,但它似乎将所有元素分组到一个或另一个分区中,而不是我想要的方式。

我想要一个数字计数列表,直到每次从 0 到 1 和 1 到 0 的转换。即,如果我们有 0,0,0,.. 好吧,我们数了 3 个零,所以记住 3,那么我们有 1, 1,1,1 所以我们数了 4 个 1,所以我们记得 4,到目前为止我们有一个 [3,4...] 的列表等等

最佳答案

Yann Moisan 解决方案的 tail-rec 版本:

    def pack[A](ls: Seq[A], prev: Seq[Int] = Seq.empty): Seq[Int] = {
if (ls.isEmpty) prev
else {
val (packed, next) = ls span {_ == ls.head }
pack(next, prev :+ packed.size)
}
}

关于scala - 使用 Scala 集合方法帮助将 [0,0,0,1,1,1,1,0,0,1,1] 列表转换为 [3,4,2,2],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20281384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com