陈乐乐happy://kmp
int IndexOfSubstr(const char* const raw_str, const char* const sub_str)
{
int sublength = 0;
for (int i = 0; sub_str[i] != '\0'; i++)
{
sublength++;
}
vector<int> next(sublength, 0);
int i = 1;
int j = 0;
while (sub_str[i] != '\0')
{
if (sub_str[i] == sub_str[j])
{
next[i] = j + 1;
i++;
j++;
}
else
{
if (j != 0)
{
j = next[j - 1];
}
else
{
next[i] = 0;
i++;
}
}
}
i = 0;
j = 0;
while (sub_str[j] != '\0'&&raw_str[i] != '0')
{
if (sub_str[j] == raw_str[i])
{
j++;
i++;
}
else
{
if (j != 0)
j = next[j - 1];
else
i++;
}
}
if (sub_str[j] == '\0')
{
return i - j;
}
else
return -1;
}
投递微软等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了: