我需要在java中创建一个递归方法来检查两个Char列表。 如果第二个列表至少包含第一个列表中的所有字符,并且顺序相同,则应返回true,否则返回false。 例如:
列表1:“abbcd”(节点中的每个字符),列表2:“abbcccddd”(节点中的每个字符)这应该返回true。
示例2:“abbcd”,列表2:“abcd”这应该返回false。
我有一些想法,但无法达成明确的解决方案。 任何想法?
答案 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)
按顺序要求也简化了问题。
考虑两个列表同时迭代,略微不同的推进规则:
快乐的编码。