2011-07-20 87 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. 如何迭代每個列表?如何遞歸地完成?

快樂編碼。