其他分享
首页 > 其他分享> > 实现 strStr()(力扣刷题day18)

实现 strStr()(力扣刷题day18)

作者:互联网

题目

实现 strStr() 函数。
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。

题解
class Solution {
public:
    int strStr(string haystack, string needle) {
int i = 0;
	const char *ps1 = haystack.c_str();
	const char*ps2 = needle.c_str();
	const char *ps11 = haystack.c_str();
	const char*ps21 = needle.c_str();
	int len1 = haystack.size();
	int len2 = needle.size();
      if(haystack==""&&needle=="")
    return 0;
    if(len1==len2)
    {
        if(haystack == needle)
        return 0;
    }
	//如果needle的长度大于haystack,haystack不可能存在子串needle,直接返回NULL
  
	if (len2>len1)
		return -1;
	while (*ps1 != '\0')
	{
		while ((*ps1 == *ps2) && (*ps2 != '\0'))
		{
			ps1++;
			ps2++;
		}
		if (*ps2 == '\0')
		{
			return i;
		}
		else
		{
			ps2 = ps21;
			ps11++;
			ps1 = ps11;
			len1--;
            i++;
		}
		//此时haystack中剩余的字符串已经小于needle的长度,不必再继续查找
		if (len1<len2)
		{
			return -1;
		}
	}
	return -1;
    }
};

标签:strStr,int,needle,力扣,len1,ps2,haystack,ps1,day18
来源: https://blog.csdn.net/kdnnnd/article/details/120570682