Q1。)如果我在文件abc.txt
中有一个单词列表,我必须找出该文件中的最大长度单词,你将如何做?
Ans)我开始使用天真的方法,加载文件,然后遍历文件一次,找出最大长度字符串。
Q2。)对解决方案进行编码
Ans)我轻松编写了我提到的解决方案。
Q3。)如果文件大小增加到6GB怎么办?那么你将使用什么数据结构?
Ans)我提到了哈希地图,但我不知道该说些什么。这不是正确的答案,我知道。但那么,怎么做呢?
答案 0 :(得分:4)
你不必记住找到最长的所有单词,你只需要记住你到目前为止找到的最长的单词。所以:
std::ifstream in("filename");
std::string longest_word, new_word;
while(in >> new_word) {
if(new_word.size() > longest_word.size()) {
longest_word = new_word;
}
}
std::cout << "The longest word is: " << longest_word << '\n';
然后,你所关心的文件大小可以是7TB。
答案 1 :(得分:-1)
关于问题3.如果内存不够大,无法加载文件一次。然后你需要拆分文件。如果文件增加到6G,计算机内存为1G。然后将abc.txt文件拆分为6个以上的文件,以便将文件加载到内存中。
如何拆分文件取决于单词出现频率。如果单词是随机的,你可以
while(in >> new_word) {
switch(HASH(new_word)%6){
case 0:
//store the new_word into file1
break;
……
case 6://store the new_word into file6
break;
}
}