笔者在学习数据结构时,觉得视频里的暴力遍历的时间复杂度太高,突发奇想自己写了一段代码来实现这个功能.限于笔者只是新手中的新手,这段代码在网上肯定有原型,故本篇文章只是用来记录自己学习和思考的足迹.
class ch
{
public:
const char* p;
int size;
ch()
{
this->p = NULL;
this->size = 0;
}
int sunstr(const char* ch,int size) //查找与另一个字符串相同的子串,返回该子串第一个字母的位置
{
int m =0,record =0,j=0;
for (int i = 0; i < this->size;)
{
if (p[i] == ch[j])
{
i++;
j++;
}
else if (i <= this->size - size)
{
j = 0;
i = record++ + 1;
}
else if (i > this->size - size)
{
return -1; //失败
}
if (j == size)
{
return i-size;
}
}
}
};
int main()
{
ch str;
str.p = "abcdef";
str.size = 6;
cout<<str.sunstr("dc",2)<<endl;
system("pause");
return 0;
}