寻找第四个出现了两次或者两次以上的字符串
来源:互联网 发布:微信软件源 编辑:程序博客网 时间:2024/06/04 18:30
今天去了某个搞量化投资的公司面试实习生,坐了一个多小时的地铁终于找到了地方,唉,上海今天的空气质量又 爆表了,懒得吐槽了。到地点后,直接给了一张纸,有一道题,10分钟作答。
题目大概是这样的:在“abc abf abc str jslt str abf 7788 7788 fasd fkjl unnid ...”中找到第四个出现两次或者两次以上的字符串。当时一看就慌了,主要是好久没有手写代码了,一开始以为要完整的写出程序,而我恰好关于文件录入的函数记不大清了(后来证明只要写伪代码就好了),时间又比较紧,只好飞快的搜索大脑,绞尽脑汁,想出了一个方案,思路虽然是对的,当时解答也没什么问题,但是回来之后想了想,还是有许多小细节错误,所以就在机器上又完整的写了一遍,跑了一下,代码如下:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <map>using namespace std;struct charnum { char str[10]; int num;};int main(){ FILE *fp = fopen("data.txt", "rw+"); char tmp[10] = {0}; struct charnum tmpstr; map<int, struct charnum> mystr; int num = 0; int cou = 0; bool found = false; while (fscanf(fp, "%s", tmp) != EOF && !found) { map<int, struct charnum>::iterator it; for (it = mystr.begin(); it != mystr.end(); it++) { if (strcmp(it->second.str, tmp) == 0) { it->second.num++; if (it->second.num == 2) { cou++; if (cou == 4) { printf("The 4th str: %s", tmp); found = true; break; } } } } if (it == mystr.end()) { memcpy(tmpstr.str, tmp, sizeof(tmp)); tmpstr.num = 1; printf("%s\n", tmp); mystr[num++] = tmpstr; } } fclose(fp);}data.txt中的数据就是abc abf abc str jslt str abf 7788 7788 fasd fkjl unnid 。
0 0
- 寻找第四个出现了两次或者两次以上的字符串
- 寻找一个字符串中第一个只出现两次的字符
- 寻找数组中唯一出现两次的数
- js 数组处理 -- 获取数组重复2次或者两次以上的元素
- 剑指offer--之字符串中先出现两次的字符
- 找出字符串中第一个只出现两次的字符
- 西游记中的笔误:文殊菩萨的狮子出现了两次
- 唯一出现两次的数字
- HDU 3518 Boring counting(后缀数组 所有不重叠字串出现两次以上的次数)
- hdu3518(后缀数组求至少出现两次以上的不可重叠串)
- 我的站被收录了两次,被封掉两次,怎么办?
- 我的站被收录了两次,被封掉两次,怎么办?
- 有关于用javaScript点击一次提交数据却发送了两次或者多次的问题
- Single Number(找出只出现了一次的数,其它数都出现两次)
- 找出数组中只出现一次的数字,其它数字都出现了两次,及其扩展
- 数组中出现两次的数
- hdu 3518 重复两次以上的不相交子串
- 一个解了两次的bug
- 小强的HTML5移动开发之路(1)——HTML介绍
- ros的topic:创建消息类型、发布、订阅
- Linux Shell命令中判断目录下是否存在已知后缀名文件的命令
- C#中的委托与事件(二)
- android 设置textview中划线效果
- 寻找第四个出现了两次或者两次以上的字符串
- H.264 码流结构解析 (整理)
- Tcpdump命令使用
- linux下的文件搜索
- cocos2d-x显示中文
- Javascript—XPATH技术解析XML
- PDF转WORD
- Django 模板语言:如何重复for loop词典的值
- 【9】coco2d-x事件处理机制二