题目描述:来源:https://leetcode-cn.com/problems/implement-strstr/
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
解决思路:
依次扫描haystack字符串,其下标为i,当有一个字符和needle的第一个字符相同时,就进入逐个字符匹配,并用一个bool变量start为真表示开始匹配,然后逐个扫描后面的是否相同,并先保存此时的下标为index1,并用一个数字记录needle此时的下标index2,如果后面的字符匹配则index2加1,当index2等于needle的长度减一时说明匹配成功,如果其中有任何一次不相同,匹配失败,将start改为false,并将i设置为index1,重新进入匹配第一个字符开始的状态。
代码:
class Solution {
public:
int strStr(string haystack, string needle) {
bool start=false;
int index1=0,index2=0;
if(needle.length()==0)
return 0;
else if(needle.length()<=haystack.length())
{
for(int i=0;i<haystack.length();i++)
{
if(!start&&haystack.at(i)==needle.at(0))
{
start=true;
index2=i;
}
if(start&&haystack.at(i)==needle.at(index1))
{
if(index1==needle.length()-1)
return index2;
index1++;
}
else if(start)
{
start=false;
i=index2;
index1=0;
}
}
return -1;
}
else
return -1;
}
};