2012-08-17 177 views
0

這是一個理論問題,所以我將使用僞代碼。將一個對象列表轉換爲另一個列表

我有一個對象列表,我需要轉換成另一個列表。

我實現了Levenshtein算法,工作得很好,但我需要保留對象,而不是創建新對象。我可以強制它,但我寧願找一個非O(n * m)的方式來做到這一點。

[OBJ1,OBJ2,OBJ3] - > [OBJ1,OBJ4,obj5,OBJ2,obj6,OBJ3]

OBJ1,OBJ2,OBJ3必須其中其餘的新創建的對象相同的對象。

有人知道一個很好的算法嗎?

+1

這個問題是不可能用僞代碼來回答的,因爲答案取決於你的語言的特徵。 C++和Java的答案會有很大的不同。 – dasblinkenlight 2012-08-17 17:04:47

+0

您的問題字符串中的對象。中間對象應該是什麼樣子,它們是編輯距離爲1的步驟? – cmh 2012-08-17 17:12:28

+0

否對象是複雜的類。所有編輯距離都是1.這些是有序用戶內容的小列表。我在C#中做這個,列表是我們所做的類的列表。 – busbina 2012-08-17 17:49:43

回答

1

您可以使用flyweight這種模式來做到這一點,您需要在高速緩存中維護創建的對象。 Java中的字符串就是這種模式的一個很好的例子。

+0

我明白這是如何工作的。我最終只會瀏覽每個列表一次。我執行它並回來。謝謝!! :) – busbina 2012-08-17 18:22:04

相關問題