字符串操作系列_3字符串中是否存在指定子串

       字符串操作在各大小公司的笔试和面试中经常出现,“字符串操作系列”的目标是整理出常见的字符串操作题目,并给出笔者的参考代码。笔者将不断更新该系列博文,敬请关注!

题目:判断字符串中是否存在指定子串,如果存在,则返回子串第一次出现的位置,如果不存在,则返回-1,例如字符串为“abcdefghijk”,当子串为“ghi”时,则返回6,当子串为“bdf”时,返回-1.

下面给出c/c++语言代码:

#include <iostream>
#include<assert.h>

using namespace std;

int findSubStr(char* str,char* sub)
{
	assert(str!=NULL && sub!=NULL);

	char* pstr = str;
	char* psub = NULL;
	int len = strlen(sub);
	while(*pstr != NULL)
	{
		psub = sub;
		if(*pstr==*sub)
		{
			while(*psub==*pstr && *psub!=NULL)
			{
				pstr++;
				psub++;
			}
			//如果比较*psub == NULL,说明子串存在,返回索引
			if(NULL == *psub)
			{
				return (pstr-str-len);
			}
		}
		else
		{
			pstr++;
		}
	}
	//子串不存在则返回-1
	return -1;
}

int main()
{
	char str[] = "abcdefghijk";
	char sub[] = "ghi";
	cout<<findSubStr(str,sub)<<endl;

	return 0;
}
运行结果如下:

字符串操作系列_3字符串中是否存在指定子串_第1张图片

你可能感兴趣的:(字符串操作系列_3字符串中是否存在指定子串)