实现 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指向的位置来判断两字符数组是否完全匹配。