我将如何去实现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