Java中的链表 - 比较两个列表

时间:2011-07-20 20:34:07

标签: java

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

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

示例2:“abbcd”,列表2:“abcd”这应该返回false。

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

2 个答案:

答案 0 :(得分:1)

我假设您使用通常的节点结构,其中包含数据元素和对下一个节点的引用。然后可以按如下方式定义函数:

  • 包含(null,haystack)= true(因为每个字符串都包含空字符串)

  • 包含(pattern,null)= false(因为空字符串不包含任何模式)

  • 包含(pattern,haystack)= contains(pattern.next,haystack.next)if pattern.data = haystack.data (我们找到了匹配并继续进入两个列表中的下一个项目)

  • 包含(pattern,haystack)= contains(pattern.next,haystack.next)else(我们发现没有匹配并尝试使用大海捞针中的下一个字符)

答案 1 :(得分:0)

按顺序要求也简化了问题。

考虑两个列表同时迭代,略微不同的推进规则:

  1. “查找”列表何时前进到下一个节点?
  2. 可能包含“查找”列表的列表何时进入下一个节点?
  3. 在什么时候确定“找到”列表中没有包含另一个?
  4. 在什么时候确定了比赛?
  5. 如何迭代每个列表?如何以递归方式完成?
  6. 快乐的编码。