数据结构中Java实现KMP与BF算法对比
来源:互联网 发布:cisco 端口配置 编辑:程序博客网 时间:2024/06/14 03:44
public class KMPANDBF {public int indexBfCount(SeqString s,SeqString t,int begin){int slen,tlen,i=begin,j = 0;int count = 0;slen =s.length();tlen = t.length();while ((i<slen)&&(j<tlen)) {if (s.charAt(i)==t.charAt(j)) {i++;j++;}else{i = i - j +1;j = 0;}count++;}return count;}public int indexKMPCount(SeqString s,SeqString t, int begin) {int[] next = getNext(t);int i =begin ;int j =0;int count = 0;while (i<s.length()&&j<t.length()) {if (j == -1||s.charAt(i) == t.charAt(j)) {i++;j++;}else if(j == 0){i++;}else {j = next[j];}count++;}return count;}public int[] getNext(SeqString T) {int[] next = new int[T.length()];int j =1;int k = 0;next[0] = -1;next[1] = 0;while (j<T.length()-1) {if (T.charAt(j)==T.charAt(k)) {next[j+1] = k +1;j++;k++;}else if (k == 0) {next[j +1]=0;j++;}else {k = next[k];}}return (next);}public static void main(String[] args) {SeqString s1 =new SeqString("abcdbacc");SeqString t1 =new SeqString("abcd");KMPANDBF c =new KMPANDBF();System.out.println("测试1:主串 S = "+ s1.toString()+", 模式串 T = "+ t1.toString());System.out.println("BF算法比较次数: "+c.indexBfCount(s1, t1, 0) );System.out.println("KMP算法比较次数:" +c.indexKMPCount(s1, t1, 0));SeqString s2 = new SeqString("aaaaaaaaa");SeqString t2 = new SeqString("aaaab");System.out.println("测试1:主串 S = "+ s2.toString()+", 模式串 T = "+ t2.toString());System.out.println("BF算法比较次数: "+c.indexBfCount(s2, t2, 0) );System.out.println("KMP算法比较次数:" +c.indexKMPCount(s2, t2, 0));}}
0 0
- 数据结构中Java实现KMP与BF算法对比
- [数据结构与算法]BF算法与KMP算法实现
- BF与KMP算法
- Kmp 与 BF算法
- 数据结构:BF算法,KMP算法之C、C++的实现
- 【数据结构与算法】字符串匹配之BF&KMP算法
- 数据结构 模式匹配BF和KMP算法实现
- BF算法与KMP算法
- BF算法与KMP算法
- KMP算法与BF算法
- BF算法与KMP算法
- BF算法和KMP算法对比
- 字符串模式匹配中BF算法和KMP算法的java实现
- [算法导论] BF算法与KMP算法
- C++实现:BF算法和KMP算法
- c++实现BF算法 KMP算法
- 数据结构笔记--通过与BF算法的比较理解KMP算法
- KMP与BF模式匹配算法
- HDU5265 序列变换
- Meta标签下format-detection属性及含义
- Python 接口测试(五)
- Android中的线程(一)
- 查找某目录下占用空间最大的10个文件
- 数据结构中Java实现KMP与BF算法对比
- C++抽象编程——面向对象(4)——运算符重载与友元函数
- LEETCODE17
- linux系统之网络管理(1)
- listview显示不同布局的一个坑(记一下,以防后面又忘了)
- 51nod1289
- dp总结
- angularJs的表单验证
- 工作日志