我將如何去實現diff函數,比如stackoverflow的問題修訂歷史記錄。如何實現diff功能?
回答
您在這裏有一個javascript example差異算法的實現。基於
:
P. Heckel, A technique for isolating differences between files 通訊。 ACM,21,(4),264--268(1978)。
實施,本身具有兩種功能,其中之一是推薦使用:
diffString(String oldFile, String newFile)
此方法需要兩個字符串並計算各個差異。最終的結果是用HTML標記的'newFile'(以表示舊文件的刪除和newFile的添加)。
謝謝!我相信這是js的一個好方法。 – nowa 2008-10-25 07:18:17
我想唯一的方法是比較形成2個字符串的每個字符。類似這樣的:
void diff(String first,String second) {
int biggest = (first.length() > second.length()) ? first.length() : second.length();
for(int i = 0;i < biggest;i++) {
//compare each char from the longest string with each char from the shorter
// do something with them if they're not equal
}
}
這只是我如何去做的一個草圖。一切都取決於你想要對數據做什麼。
我會找到FreeBSD diff實用程序的代碼並將其用作基準。當許可證允許進行這種複製時,重新制造輪子沒有意義。
這將是一個選項,但在這種特殊情況下(diff代碼庫),從零開始編寫它會容易十倍。至少可以說,diff代碼庫是拜占庭式的。這是足夠古老的,讓你看到它不到10分鐘後發出尖叫聲。我知道,我看了:) – 2008-10-25 08:34:04
大多數算法都基於LCS:Longest common subsequence。以有效的方式實施它並不明顯。你可能會在網上找到各種各樣的語言實現。
- 1. 如何實現MenuStrip功能?
- 2. 如何實現Wait()功能
- 3. 如何實現該功能?
- 4. 如何實現智能裁剪功能
- 5. 如何在Hadoop中實現diff?
- 6. 如何實現標籤功能,如tumblr
- 7. 實現parallel_for_each功能
- 8. 實現`distrib`功能
- 9. 我如何實現Facebook的功能?
- 10. 如何實現多功能類
- 11. 如何實現拖放功能extjs 4.0.2a
- 12. 如何在Cucumber中實現BeforeSuite功能
- 13. 如何實現「閱讀更多」功能
- 14. 如何實現iOS提醒功能?
- 15. 如何實現UITableView搜索功能
- 16. stackoverflow如何實現標記功能
- 17. 如何使用GDIplus實現Chord功能?
- 18. 如何使用OOP實現此功能?
- 19. 如何在Flex中實現AJAX功能
- 20. 如何實現這個刪除功能
- 21. 如何實現後退按鈕功能
- 22. 如何在Typo3中實現新功能?
- 23. 如何在方案實現此功能
- 24. cushy cms如何實現其功能?
- 25. 如何在jquerymobile中實現AutoComplete功能?
- 26. 如何在MySQL中實現initcap功能?
- 27. 如何實現混合交互功能?
- 28. 功能如何do_raw_spin_lock在Linux中實現
- 29. 如何在PHP中實現此功能?
- 30. 如何實現Facebook的「按鈕」功能?
我想你需要提供更多信息... – 2008-10-25 07:04:28