在采访中询问了这个问题。
给定一个大文件,搜索并替换给定的单词。有很多方法可以实现这个问题。
一些开放式的问题 - 如何表示大文件?像char数组?通过流读者?等等
我正在思考GapBuffer的路线。如果replacement string
长于source
字符串,则使用ArrayCopy增加char数组大小,然后执行以下操作:
for (Each character going backward/reverse) {
shift character forward by 'x' steps. 'x' is (replacement string length - source length) * (frequency of source)
each time the match is found, then replace the string.
reduce 'x' by (replacement string length - source length)
}
有更好的建议吗?
答案 0 :(得分:0)
我想这是现有工具已经有效解决的问题之一,不应该自己实现。面试官可能想听听使用像sed
这样的unix工具。
如果要求您编写代码,那么最简单的方法是使用另一个输出文件并在缓冲区中逐个读取文件,查找/替换,写入输出。