2010-08-11 21 views
1
Diff function on two arrays (or how to turn Old into New) 

Example 
One[]={2,3,4,5,6,7} 
Two[]={1,2,3,5,5,5,9} 

Example Result 
Diff: insert 1 into One[0], One[]={1,2,3,4,5,6,7} 
Diff: delete 4 from One[3], One[]={1,2,3,5,6,7} 
Diff: modify 6 into 5 in One[4], One[]={1,2,3,5,5,7} 
Diff: modify 7 into 5 in One[5], One[]={1,2,3,5,5,5} 
Diff: append 9 into One[6], One[]={1,2,3,5,5,5,9} 

Need code in c++/mfc/stl/c, Thanks. 
+1

爲什麼要這麼做?如果您只需重新分配副本,它通常會更快。這裏的高層圖片是什麼? – 2010-08-11 00:07:20

+0

這是一個簡化示例,概述數據庫表智能更新。我有幾個數組放入表中;我有原始數組和新數組,需要通過刪除僅需要刪除和添加需要插入和更改已存在行的行的行來更新數據庫... – jmc 2010-08-11 15:30:45

回答

1

你需要的是一個字符串匹配算法,通常使用動態編程實現(見here)。

我強烈建議使用執行diff的庫而不是自己實現它。

1

儘管通常用字母而不是整數來完成,但計算萊文斯坦距離的通常算法應該和通常應用的一樣好。