问题描述:
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。
代码流程图:
代码实现:
class Solution {
public:
int strStr(string haystack, string needle) {
if(needle.empty()) return 0;
if(needle.size()>haystack.size()) return -1;
int i=0,n=haystack.size(),m=needle.size();
while(i<n-m+1){
if(haystack[i]!=needle[0]|haystack[i+m-1]!=needle[m-1]){
++i;
continue;
}
else if(haystack.substr(i, m) == needle) return i;//i开始截取m个字符
else ++i;
}
return -1;
}
};