您的位置:首页 > 职场人生

【July程序员编程艺术】之现场编写类似strstr/strcpy/strpbrk的函数

2015-10-14 16:48 666 查看
这一节主要是实现一些C库中的库函数,比较简单,只要注意好细节即可。本节我只用C++实现了strstr和findfirst,其他的以后有时间再去实现

#include <iostream>
#include <string>
using namespace std;
int strstr(string & lstr,string & sstr);
char findfirst(string & str);
int strstr(string & lstr,string & sstr)
{
char * pointa,* pointb;
int la = lstr.length();
int lb=sstr.length();
int j=0,i=0;
while(i<la)
{
if(lstr[i]==sstr[0])
{
for(j=1;j<lb;j++)
{
if((lstr[i+j]!=sstr[j])||(i+j==la))
{
i=i+j;
break;
}
}
if((j==lb))
return i;
}
else
i++;

}
return 0;
}

char findfirst(string & str)
{
int tmp[256]={0};
int len = str.length();
char f ='a';
for(int i=0;i<len;i++)
{
tmp[str[i]-'a']++;
}
for(int i=0;i<256;i++)
{
if(tmp[i]==1)
return f+i;
}
return '0';
}

void main()
{
string a("ABCD");
string b("CD");
int res = strstr(a,b);
cout << res << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: