求最高效(如果有的话)的文本查找替换算法?
有哥 2004-12-24 08:31:20 前几天散分想翻译Boost文档,得到了不少朋友的鼓励,但文档实在太多了,我想做个文本翻译工具来完成。
现在替换词库、搜索目标文件、开多替换线程等都写好了,就是还没想好一个高效的查找替换算法,来放到线程里面。我把思路理一下,各位帮忙想个高效的算法。
替换词条结构:
struct etoc
{
char en[254];
char chn[254];
}
有许多条,或许上百万,现在列在一个Listview2中,供用户查看修改。各位可以根据算法的需要自行决定组织的方式(数组、列表、队列或其它)。
目标函数接收要分析替换的一个文件名,读入内容,对照上面的结构,逐个分析是否有与en一致的,有就换为chn,替换完后写入磁盘。
注:须优先替换最长的字符串,以尽量保证译意准确,如Borland c++ 与 Borland C++ Builder,只有在Borland C++ Builder不成立的情况下,才能考虑替换掉Borland c++。
这里只能给100分,解决后到BCB区领分。
CB茶馆群(4491288)的朋友可以在群共享里下载文本翻译工具的半成品。