某外企C++面试题
来源:互联网 发布:网络cv设备 编辑:程序博客网 时间:2024/06/08 08:09
我见过一个外企C++面试题,我当时也没做出来,经过这几天思考,有了点思路,现在给大家分享。注意,原题是英文的。
题目:给一个文本文件,该文件中包含一篇文章,要求写代码统计出里面长度最长的10个单词,并且记录打印出该单词所在的段落以及内容。
我刚看到题目的时候,认为这是一个词频统计的问题,所以想了各种方法都达不到好的效果,经过这几天思考,终于写出来这个题目的解法,特记录如下。
#include <iostream>#include <vector>#include <algorithm>#include <fstream>#include <map>using namespace std;struct word{string content;int graph;word(string c,int g):content(c),graph(g){}};int cmp(word p1,word p2){ return p2.content.size() < p1.content.size();}int main(){ fstream fs("d:/demo.txt"); fs >> noskipws; char c; // each character. string str; //each word long pos=1; // graph vector<word> vect; // all word. map<int,string> graph; // graph,string mapping. string str_graph; while(!fs.eof()) { fs>>c; if(fs.eof())break; if(c == '\n')continue; if(c == ' ' || c == ',' || c == '.' || c == ':') { word w(str,pos); vect.push_back(w); str.clear(); str_graph.append(&c,1); if(c == '.') { graph.insert(make_pair(pos,str_graph)); str_graph.clear(); } }else{ str.append(&c,1); str_graph.append(&c,1); } if(c == '.') { ++pos; } } sort(vect.begin(),vect.end(),cmp); vector<word>::iterator begin = vect.begin(); while(begin!=vect.end()) { word wo = *begin; cout << wo.content << "--------------->" << wo.graph << endl; ++begin; } map<int,string>::iterator begin1 = graph.begin(); while(begin1!= graph.end()) { pair<int,string> pa = *begin1; cout << pa.first << "----------->" << pa.second << endl; ++ begin1; } return 0;}
逐个字符进行读取,并过滤掉其中的标点符号,另外,专门声明一个struct用来记录这个单词以及单词对应的段落编号。在逐个字符读取时,同时也记录每一个段落的内容。另外,我这里用了一个文件进行测试,文件内容如下:
hi guys:where are you.
haha, have a guess.
welcome,lucy,welcome to home.
我分析了一下,里面主要是需要创建一个对象,另外需要留意使用sort函数,且自己实现compare函数。 上面代码可以优化空间很大,仅供参考即可。
打印结果就不记录了,上面这个程序在我电脑上运行过,已经统计出来了。
阅读全文
0 0
- 某外企BI 面试题
- 某外企C++面试题
- 某外企SQL Server面试题
- 某外企SQL Server面试题
- 某外企SQL Server面试题(高级)
- 某外企SQL Server面试题
- 某外企SQL Server面试题
- 买三送一(某外企面试题)
- 某游戏彩票外企Java面试题
- 外企技术面试题
- 外企技术面试题
- 外企常见面试题
- 外企的一道面试题
- 外企常见英语口语面试题
- 外企常见英语口语面试题
- 某外企SQL Server面试题(英文,答案)
- 某外企SQL Server面试题(英文,答案)
- 珠海某外企C++面试题(算法)
- POI读取excel转换成XML
- MySQL 第五天
- object转化成json,json格式字符串转字典,数组或字典转为json串
- usb转串口异步读取数据
- 背包DP合辑
- 某外企C++面试题
- Android BLE 开发资料汇总
- Spark机器学习之协同过滤算法使用-Java篇
- vue-router(1)
- MySQL 第四天
- python,Windows环境安装及导入beautifulsoup
- RSA密钥,JAVA与.NET之间转换
- java发送邮件
- 【yoyo】计算2018年1月1日距当天事件还剩多少天,多少小时,多少分钟,多少秒;