簡體   English   中英

Java 中的鏈表 - 比較兩個列表

[英]Linked list in Java - comparing two lists

我需要在 java 中創建一個遞歸方法來檢查兩個字符列表。 如果第二個列表包含第一個列表中的所有字符至少一次並且以相同的順序它應該返回 true,否則它應該返回 false。 例如:

列表 1:“abbcd”(節點中的每個字符),列表 2:“abbcccddd”(節點中的每個字符)這應該返回 true。

示例 2:“abbcd”,列表 2:“abcd”這應該返回 false。

我有一些想法,但無法得出明確的解決方案。 任何人的想法?

我假設您使用帶有數據元素和對下一個節點的引用的通常節點結構。 然后可以定義 function 如下:

  • contains(null, haystack) = true (因為每個字符串都包含空字符串)

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

  • contains(pattern, haystack) = contains(pattern.next, haystack.next) if pattern.data = haystack.data (我們找到匹配項並繼續處理兩個列表中的下一項)

  • contains(pattern, haystack) = contains(pattern.next, haystack.next) else (我們沒有找到匹配項並嘗試使用 haystack 中的下一個字符)

有序的要求也簡化了問題。

考慮到兩個列表同時迭代,推進規則略有不同:

  1. “要查找”列表何時推進到下一個節點?
  2. 可能包含“查找”列表的列表何時推進到下一個節點?
  3. 在什么時候確定“要查找”列表不包含在另一個列表中?
  4. 比賽在什么時候確定?
  5. 如何迭代每個列表? 如何遞歸完成?

快樂編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM