用JAVA语言实现的BM算法

来源:互联网 发布:淘宝上卖的茶杯犬真吗 编辑:程序博客网 时间:2024/05/13 22:22

packagecom.java.kmp;/**

*BM实现类

*

*/

publicclassBM{

privatelongtime1,time2;privatelongcount;

privateintdist(charc,charT[]){

intn=T.length;

if(c==T[n-1]){

returnn;

}

for(inti=n;i>=1;i--){

if(T[i-1]==c)

returnn-i;

}

returnn;

}

publicvoidbm(Stringmsg){

Stringstring2="";

Stringpattern="123456";Stringtest="123";

char[]p=pattern.toCharArray();char[]t=test.toCharArray();

intplen=p.length,tlen=t.length;intsum=0;

if(plen<tlen){

System.out.println("匹配失败");


}else{

inti=tlen,k,j;

time1=System.nanoTime();

while(i<=plen){

k=i;

j=tlen;

while(j>0&&p[i-1]==t[j-1]){

i--;

j--;

}

if(0==j){

sum=sum+tlen;

string2=string2+"在主串中第"+(i+1)+"位匹配成功;";System.out.println("在主串中第"

+(i+1)+"位匹配成功.");

break;

}else{

sum=sum+k-(i-1);

i=i+dist(p[i-1],t);

if(i>plen){

string2=string2+"匹配失败;";

System.out.println("匹配失败.");

break;

}

}

//System.out.println(i);

}

time2=System.nanoTime();

}

System.out.println("BM算法共匹配了"+sum+"次.");System.out.println("BM算法开始时间为"+time1+".");System.out.println("BM算法结束时间为"+time2+".");count=time2-time1;

//string2=string2+"\n所用时间为:"+count+"ms.\n";System.out.println("整个BM算法共用时"+count+"ns.\n");}

publicstaticvoidmain(String[]args){

BMbm=newBM();

bm.bm();}

}


一起学习java的伙伴加java免费学习资料直播公开课思维交流群:175161984(←长按可复制)获取学习资料可
0 0
原创粉丝点击