首页 > 其他 > 详细

HasSubsequence

时间:2016-04-23 08:58:11      阅读:240      评论:0      收藏:0      [点我收藏+]
object HasSubsequence {

  def startWith[T](a: List[T], b: List[T]): Boolean = (a, b) match {
    case (_, Nil)                           => true
    case (h1 :: t1, h2 :: t2) if (h1 == h2) => startWith(t1, t2)
    case _                                  => false
  }

  def hasSubsequence[A](sup: List[A], sub: List[A]): Boolean = sup match {
    case Nil                      => sub == Nil
    case _ if startWith(sup, sub) => true
    case (h :: t)                 => hasSubsequence(t, sub)

  }

  def main(args: Array[String]): Unit = {
    val ls = List(1, 2, 3, 4)
    println(hasSubsequence(ls, List(1, 2)))
    println(hasSubsequence(ls, List(2, 3)))
    println(hasSubsequence(ls, List(4)))
    println(hasSubsequence(ls, List(3, 2)))
    println(hasSubsequence(ls, List(1, 2, 4)))
    println(hasSubsequence(ls, List(5)))
    println(hasSubsequence(ls, Nil))
    println(hasSubsequence(Nil, Nil))
    println(hasSubsequence(Nil, List(1)))
  }

}
true
true
true
false
false
false
true
true
false

 

HasSubsequence

原文:http://www.cnblogs.com/JonkeyGuan/p/5423788.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!