LeetCode是什么,leetcodetop
实现strStr().
返回指向第一个出现在干草堆中的针的指针,如果针不是干草堆的一部分,则返回零.
回答1:0(n * m)
类别解决方案{
公共:
char *strStr(char *haystack,char *needle) {
//开始在下面键入您的C/C解决方案
//不要写int main()函数
int haylen=strlen(干草堆);
int needlen=strlen(针);
for(int I=0;I=hay len-needlen;i ){
char * p=haystack I;
char *q=针;
while(*q!= ){
if(*p!=*q){
打破;
}否则{
p;
q;
if(*q== ){
返回草堆我;
返回空
};
安韦瑟尔2:KMP
类别解决方案{
公共:
char *strStr(char *haystack,char *needle) {
//开始在下面键入您的C/C解决方案
//不要写int main()函数
int haylen=strlen(干草堆);
int needlen=strlen(针);
int * fail=new int[needlen];
memset(fail,-1,needlen * sizeof(int));//strlen(失败)
int i,j,k;
for(I=1;我缝纫;i) {
for(k=fail[I-1];k=0针[我]!=needle[k 1];k=fail[k]);
if (needle[k 1]==needle[i])
fail[I]=k 1;
I=j=0;
while(I haylen j needlen)//while(haystack[I]needle[j])
如果(草堆[我]==针[j])
我;
j;
else if(j==0)I;
else j=fail[j-1]1;
删除失败;
if (needle[j]) {
返回空
}否则{
返回草堆I-j;
if(j==needlen){
返回草堆I-j;
}否则{
返回空
};