leetcode刷题日记之实现strStr()

实现 strStr() 函数。

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1。

解题思路yo:

  这道题困扰了我很久,最后我也没有做出来,是看的别人的解法提交的答案,在这里,把别人的解法搬运过来,顺便让自己复盘一下别人的思路。

代码如下:

int strStr(char* haystack, char* needle) {

    int i=0,j=0;
    while(haystack[i]!='\0'&&needle[j]!='\0')
    {
        if(haystack[i]==needle[j])
        {
            i++;j++;
        }
        else
        {
            i=i-j+1;
            j=0;
        }
    }
    if(needle[j]=='\0')
        return i-j;       
    else 
        return -1;
}

这个作者很厉害,首先给while循环一个退出循环的条件,只要有一个字符数组的指针走到了末尾即退出循环,在循环体中,当haystack中出现了与needle首元素相同的元素时让i,j同时加一一次判断下一个元素,否则就用i=i-j+1这个语句巧妙的使i回到了与needle首元素相同的后一个元素的位置,并把j置为0.当循环执行完毕时。判断j指向的位置来判断两字符数组是否完全匹配。

 

上一篇:Haystack-全文搜索框架


下一篇:#leetcode刷题之路28-实现 strStr() 函数