裸的KMP实现
来源:互联网 发布:博雅软件怎么用 编辑:程序博客网 时间:2024/05/16 03:18
int strStr(string haystack, string needle) {
if(!haystack.size()&&!needle.size())
return 0;
else if(!needle.size())
return 0;
int len1=haystack.size();
int len2=needle.size();
int next[len2];
//
next[0]=-1;
if(1<len2)
next[1]=0;
int i=2;
int j=0;
int len=needle.size();
while(i<len)
{
if(j==-1)
{
next[i]=0;
j=0;
i++;
}
else if(needle[i-1]==needle[j])
{
next[i]=j+1;
i++;
j++;
}
else
{
j=next[j];
}
}
//
i=0;
j=0;
while(i<len1)
{
if(j==-1||haystack[i]==needle[j])
{
i++;
j++;
}
else
{
j=next[j];
}
if(j==len2)
return i-j;
}
return -1;
}
};
if(!haystack.size()&&!needle.size())
return 0;
else if(!needle.size())
return 0;
int len1=haystack.size();
int len2=needle.size();
int next[len2];
//
next[0]=-1;
if(1<len2)
next[1]=0;
int i=2;
int j=0;
int len=needle.size();
while(i<len)
{
if(j==-1)
{
next[i]=0;
j=0;
i++;
}
else if(needle[i-1]==needle[j])
{
next[i]=j+1;
i++;
j++;
}
else
{
j=next[j];
}
}
//
i=0;
j=0;
while(i<len1)
{
if(j==-1||haystack[i]==needle[j])
{
i++;
j++;
}
else
{
j=next[j];
}
if(j==len2)
return i-j;
}
return -1;
}
};
阅读全文
0 0
- 裸的KMP实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP实现的strstr
- KMP算法的实现
- kmp算法的实现
- kmp算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- KMP算法的实现
- 我的KMP实现
- KMP的python实现
- CJOJ 2482 【POI2000】促销活动
- TCP状态转换详解
- LeetCode | 54. Spiral Matrix
- swagger常用注解说明
- 剑指offer面试题25-二叉树中和韦某一值的路径
- 裸的KMP实现
- Linux克隆后网络配置
- CodeForces
- mysql change buffer
- Warning maven relocated xml-apis to 1.0.b
- fastboot及lk解析
- Servlet应用中重定向与请求转发的区别
- Java实现浏览器端大文件分片上传
- 8.12 K-生成树