2011-07-20 58 views
0

我需要在java中创建一个检查两个Char列表的递归方法。 如果第二个列表包含第一个列表中的所有字符至少一次,并且顺序相同,它应该返回true,否则它应该返回false。例如: 例如:Java中的链接列表 - 比较两个列表

列表1:“abbcd”(节点中的每个字符),列表2:“abbcccddd”(节点中的每个字符)这应该返回true。例子2:“abbcd”,列表2:“abcd”这应该返回false。

我有一些想法,但不能达成明确的解决方案。 想法任何人?

+3

你有什么想法? – Grammin

+1

如果这是作业,请标记为这样。 – home

+0

顺便说一句:为什么例2应该返回'false'? – home

回答

1

我假设您使用通常的节点结构,并带有数据元素和对下一个节点的引用。那么可以定义函数如下:

  • 包含(NULL,草堆)=真(因为每个字符串包含空字符串)

  • 含有(图案,NULL)= FALSE(因为空字符串中不包含任何模式)

  • 包含(模式,草堆)=包含(pattern.next,haystack.next)如果pattern.data = haystack.data (我们找到了一个匹配,并继续到下一个项目在这两个列表中)

  • 包含(模式,草堆)=包含(pattern.next,haystack.next)否则(我们没有发现任何比赛,并与在草堆下一个字符尝试)

0

为了要求也简化了问题。

考虑这两个名单迭代,同时具有略微不同的推进规则:

  1. 当列表“中找到”前进到下一个节点?
  2. 何时列表中可能包含“查找”列表高级到下一个节点?
  3. 在什么时候确定“查找”列表不包含在其他列表中?
  4. 什么时候决定比赛?
  5. 如何迭代每个列表?如何递归地完成?

快乐编码。