//算法思想:
//主串子串一起遍历,匹配一起增,不匹配子串归零,主串回到上次开始匹配+1位置
int strStr(char* haystack, char* needle) {
int i = 0;
int j = 0;
int k = 0;
int ret = 0;
while((haystack[i]!='\0') && (needle[j]!='\0'))
{
if(haystack[i] == needle[j])
{
//第一个字符匹配时记录位置
if(j == 0)
{
ret = i;
}
i++;
j++;
}
else
{
//j!=0的情况为匹配失败,需要将i返回到上次匹配的开始位置+1
if(j!=0)
{
i = ret + 1;
j = 0;
}
//j=0的情况是寻找开始位置,此时让i一直增加就可以
else
{
i++;
}
}
}
if(needle[j] == '\0')
{
return ret;
}
else
{
return -1;
}
}
LeetCode-Easy-找出字符串中第一个匹配项的下标(C)
于 2023-11-29 16:51:41 首次发布