首页 > 解决方案 > Scala containsSlice 实现

问题描述

如果我们在 List 中有一个保持顺序的子列表,则在 scala containsSlice 中返回 true。前任。

val sublst = List(1,2,3,4)
val lst = List(1,2,3,4,5,6)
println(lst.containsSlice(sublst)) // true

有没有办法在不使用这种方法的情况下编写这个逻辑?

标签: listscalaslice

解决方案


如果可以使用其他库函数,那么这将起作用:

def containsSlice[T](list: List[T], slice: List[T]): Boolean = {
  @annotation.tailrec
  def loop(l: List[T]): Boolean =
    l.nonEmpty && (l.startsWith(slice) || loop(l.tail))

  slice.isEmpty || loop(list)
}

推荐阅读