码迷,mamicode.com
首页 > 其他好文 > 详细

HasSubsequence

时间:2016-04-23 09:00:14      阅读:154      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!