递归函数检查是否为子数组

时间:2012-06-05 08:48:30

标签: java arrays recursion

我正在尝试编写一个递归函数来检查第二个数组中是否包含一个数组(我的示例也是子数组)并返回true或false。

例如:[d, e]

中包含[a, b​​, c, d, e, f]

我知道如何在没有递归的情况下进行检查(使用for循环),但是无法想到使用递归的解决方案。

2 个答案:

答案 0 :(得分:1)

原则如下:

0)如果第一个数组比第二个数组长,那么它不是一个子数组。

1)如果第二个数组以第一个数组开头(如[a,b]和[a,b,c,d]),那么它就是一个子数组。

2)否则:如果第一个数组是第二个数组的 tail 的子数组(也就是第一个元素之后的部分),那么它就是一个子数组。

只是为了确定:tail([a,b,c,d]) == [b,c,d](因为我不知道在Java中如何调用它。)

答案 1 :(得分:0)

你可以使用散列来在散列表中存储大数组的元素,然后检查子数组的每个元素是否在散列表中,如果找到所有元素,那么它将是子数组。