2012-08-17 152 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

相关问题