曾经被百度面试官虐的时候碰到过这题。
注意:字符串以'\0'结束,NULL和'\0'不等价。
暴力解决:
外循环:遍历haystack;
内循环:遍历needle,若字符不匹配则跳出,当遍历到needle结束时,返回当前i,若遍历到haystack结束,则不存在匹配子串,返回-1。
int strStr(char* haystack, char* needle)
{
if (haystack == NULL || needle == NULL)
return -1;
for (int i = 0; ; ++i)
{
for (int j = 0; ; ++j)
{
if (needle[j] == '\0') return i;
if (haystack[i + j] == '\0') return -1;
if (haystack[i + j] != needle[j]) break;
}
}
}