在采访中提到的可能的答案是什么?

时间:2015-01-12 10:01:31

标签: c++ algorithm

Q1。)如果我在文件abc.txt中有一个单词列表,我必须找出该文件中的最大长度单词,你将如何做?

Ans)我开始使用天真的方法,加载文件,然后遍历文件一次,找出最大长度字符串。

Q2。)对解决方案进行编码

Ans)我轻松编写了我提到的解决方案。

Q3。)如果文件大小增加到6GB怎么办?那么你将使用什么数据结构?

Ans)我提到了哈希地图,但我不知道该说些什么。这不是正确的答案,我知道。但那么,怎么做呢?

2 个答案:

答案 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;
    }
}