scala - 获取所有子序列的列表

标签 scala functional-programming

我正在寻找与 subsequences 等效的内容Scala 中的函数。我在 scala.collection.Seq 中找不到它,也许它是在其他地方定义的。但在哪里呢?

我认为这个问题是众所周知的。例如,给定序列 "abc",所有子序列的列表为 ["","a","b","ab","c","ac",“bc”,“abc”]

Scala 中快速而肮脏的实现如下:

(for {ys <- xs.inits.toList; zs <- ys.tails} yield zs).distinct

但是使用已经定义的东西会很好,而且效率更高。

最佳答案

您可以使用组合:

(0 to xs.length).toIterator.flatMap(i => xs.combinations(i))

关于scala - 获取所有子序列的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39724435/

相关文章:

haskell - Haskell 或函数式语言的代理?

scala - 对象-功能阻抗不匹配

Haskell 回溯

scala - 为什么递归惰性列表会破坏 Scala 中的堆栈?

scala - 用Gradle构建可执行的Jar以进行加特林

scala - 为什么编译器不引入依赖类型?

javascript - lambda : Composing an object produces the same "random" results

scala - 通过反射判断类型是否为单例

scala - 可以在同一个提取器中定义 unapply 和 unapplySeq

scala - Play Framework for Scala - RESTful Web 服务