轨道
/
Haskell
Haskell
/
练习
/
子数组
子数组

子数组

中等

说明

给定任意两个数组A和B,判断以下哪种情况成立:

  • 数组A与数组B相等;或
  • 数组A包含数组B(A是B的超数组);或
  • 数组A被数组B包含(A是B的子数组);或
  • 以上都不成立,因此数组A和B不相等

具体来说,如果两个数组的值相同且顺序一致,那么数组A与数组B相等。 如果数组A包含一段与B相等的连续子序列,那么A是B的超数组。 如果数组B包含一段与A相等的连续子序列,那么A是B的子数组。

例如:

  • 如果A = []且B = [](两个数组都为空),那么A和B相等
  • 如果A = [1, 2, 3]且B = [],那么A是B的超数组
  • 如果A = []且B = [1, 2, 3],那么A是B的子数组
  • 如果A = [1, 2, 3]且B = [1, 2, 3, 4, 5],那么A是B的子数组
  • 如果A = [3, 4, 5]且B = [1, 2, 3, 4, 5],那么A是B的子数组
  • 如果A = [3, 4]且B = [1, 2, 3, 4, 5],那么A是B的子数组
  • 如果A = [1, 2, 3]且B = [1, 2, 3],那么A和B相等
  • 如果A = [1, 2, 3, 4, 5]且B = [2, 3, 4],那么A是B的超数组
  • 如果A = [1, 2, 4]且B = [1, 2, 3, 4, 5],那么A和B不相等
  • 如果A = [1, 2, 3]且B = [1, 3, 2],那么A和B不相等

提示

Ordering 类型有三个构造子:LT(“小于”)、EQ(“等于”)和 GT(“大于”)。它们可以用来表示子列表的排序关系:Just LT 表示“子列表”,依此类推;而 Nothing 则表示既不是子列表、超列表,也不与之相等。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Haskell Exercism

准备好开始 子数组 了吗?

注册 Exercism,借助 107 个练习 和真人导师指导,学习并掌握 Haskell,全部免费。