ruby – 如何打开文件并搜索一个字?
发布时间:2020-12-16 22:20:24 所属栏目:百科 来源:网络整理
导读:如何使用 Ruby打开文件并在其中搜索一个单词? 解决方法 所有呈现的解都具有O(n)的时间复杂度.为了简单起见,我使用String#include?检查这个词.这可以使用正则表达式以字符串=?regex的形式进行. 阅读完整的文件并在其中搜索. File.read(filename).include?(w
如何使用
Ruby打开文件并在其中搜索一个单词?
解决方法
所有呈现的解都具有O(n)的时间复杂度.为了简单起见,我使用String#include?检查这个词.这可以使用正则表达式以字符串=?regex的形式进行.
阅读完整的文件并在其中搜索. File.read(filename).include?(word) 如果您的文件非常大,这不是最佳解决方案,因为您将完整的文件读入内存并开始搜索.你的内存复杂度是O(n) 逐行读取文件并在每行中进行搜索 File.open(filename) do |f| f.any? do |line| line.include?(word) end end 如果你的文件很大,但是你知道你的行是一个恒定值的上限,你现在的内存复杂度为O(1). 读取文件块并搜索 File.open(filename) do |f| tmp= f.read(1024) next true if tmp.include?(word) until f.eof? tmp= tmp[(-1*word.size)..-1] + f.read(1024) next true if tmp.include?(word) end next false end 在这个变体中,我们从文件中读取等大小的块.所以无论文件的条件如何,我们的内存复杂度都是O(1) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |