今天线上面试某厂,面试官出了这样一道题,大意就是:
给定一个字符串,和一个分割字符串,将字符串进行分割,存入到一个数组中。例如一个字符串为:aa;;bb;;;cc;;;;dd;;,其中分割字符串为:;;,将字符串分割为:“aa”,“bb”,”;cc“,"",”dd“,”“,并且输出。
面试官让我20分钟跑通算例,一开始我理解错了,以为分割字符串是固定的,后来在面试官的提醒下才发现那只是一个样例,然后,我并没有按期完成题目,于是面试流程秒灰……
后来我进行了一下复盘,感觉自己的思路是没有问题的,只是时间没来得及。我的思路大概是:
首先进行字符串字串搜索,为了节约时间,我直接用的暴力求解,没有采用KMP算法,然后得到匹配到的位置,将前面的字串存储,继续迭代求解后面的字串,直到到达原字符串末尾。
我在本地跑了一下,发现是没问题的,不知道当时考试的时候是因为紧张,还是牛课网站的限制,导致我的代码存在问题,没等调通就被面试官打端,然后GG了。
代码如下,希望可以得到大神的指点(虽然好像并没有人看我的博客,就当是自己的一次复盘吧):
#include<stdio.h>
#include<vector>
#include<iostream>
#include<string>
using namespace std;
//存贮结果
vector<string> result;
//暴力子串匹配
int findPos(string str,string split){
int len1 = str.length