java实现kmp算法
来源:互联网 发布:精华复读学校 网络班 编辑:程序博客网 时间:2024/05/16 00:30
//kmp.java
/**
*@author feixiang KMP算法
*待查的字符和next数组都是从0号单元开始的
*next数组的第一个是-1 即为如果要比较的下一个是带比较串的第-1个,就要移动原串了
*多走一步得-1才能知道前面没有了
*/
package first;
public class kmp{
public static void main(String[] args)
{
String a = "aaabcabcdeadfskdljfa;lskjdf;kljsdkjfeilskjf";
String b = "abcabcde";
int c = kmp_find(a,b,0);
System.out.println(c);
}
static int[] GetNext(String fidStr)
{
int len = fidStr.length();
int next[] = new int[len];
int j = -1, i = 0;
next[0] = -1;
while(i < len-1)//这里这个减1是必要的,因为i关系到了要算出next的前一个
{
if(-1 == j || fidStr.charAt(j) == fidStr.charAt(i))
{
++i; ++j;
if(fidStr.charAt(j) == fidStr.charAt(i))
next[i] = next[j];
else
next[i] = j;
}
else
{
j = next[j];
}
}
return next;
}
static int kmp_find(String SurStr, String FidStr, int pos)
{
int next[] = GetNext(FidStr);
int j = 0;
int i = pos;
while(j < FidStr.length() && i < SurStr.length()-FidStr.length()+1)
{
if(-1 == j || FidStr.charAt(j) == SurStr.charAt(i))
{
j++; i++;
}
else
{
j = next[j];
}
}
if(j == FidStr.length())
{
return i-FidStr.length();
}
else
{
return -1;
}
}
}
- java实现kmp算法
- KMP算法java实现
- Java实现KMP算法
- KMP算法java实现
- KMP算法----java实现
- KMP算法java实现
- KMP算法Java实现
- KMP 算法 java实现
- Java实现KMP算法
- KMP算法Java实现
- KMP算法java实现
- KMP算法-Java实现
- KMP算法java实现
- KMP算法JAVA实现
- Java实现KMP算法
- KMP算法 Java实现
- KMP算法java实现
- KMP算法java实现
- EPROCESS ;ethread WINDOWS 7结构
- jfreechart使用心得
- HTML5给Web带来9大改变
- linux内核中platform框架中的一个小技巧
- 20110429
- java实现kmp算法
- ARM体系结构与编程学习(九)
- postgress中的系统视图pg_user
- ACE的构建(VC++6.0环境)
- 程序员网站资源宝库
- Many or few: 1699 downloads on 2nd day after release?
- 开10个子进程,等子进程结束再执行主程序
- 由数组初始化想到的线程堆栈问题。
- 修改weka后如何打包