获取所有子序列的列表

时间:2016-09-27 12:16:31

标签: scala functional-programming

我正在寻找Scala中subsequences函数的等价物。我在scala.collection.Seq找不到它,也许它在其他地方被定义了。但在哪里?

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

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

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

但是使用已经定义的东西并且效率更高。

1 个答案:

答案 0 :(得分:4)

您可以使用combinations

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