- 题目:实现strstr函数。
- 这个函数原型 strstr(char *a, char *b),在a中是否包含b这个字符串,包含返回第一个子串的位置,否则返回NULL。
- 思路:其实这个就是找子串的问题。特殊情况,当b为空的时候,直接返回a;当b不为空的时候,指定start指针,通过两次循环,逐一对strstr中的子串和b进行匹配,如果b走到末尾,表示找到,start指针指向开始位置,否则start继续往前,
例子:abcdefg bcd
start指向a的位置, 将abcdefg和bcd比较 ->否
start前进,指向b的位置, 将bcdefg和bcd比较 -> 是 返回start指针。 - 代码
class Solution { public: char *strStr(char *haystack, char *needle) { if (!*needle) return haystack; char *start = haystack; char *temp1 = haystack, *temp2 = needle; while (*start){ temp1 = start; temp2 = needle; while (*temp2 && temp1 && !(*temp2 - *temp1)) temp2++, temp1++; if (!*temp2) return start; start++; } return NULL; } };