java模式匹配之蛮力匹配
java模式匹配之蛮力匹配
/**
*模式匹配之蛮力匹配
*/
packagejavay.util;
/**
*PatternMatchBrute-Force
*@authorDBJ
*/
publicclassPMBF{
/**
*PatternMatchBrute-Force
*@paramtarget目标串
*@parampattern模式串
*@return模式串在目标串中第一次出现的位置
*/
publicstaticintpatternMatch(Stringtarget,Stringpattern){
inttargetLength=target.length();
intpatternLength=pattern.length();
intidxTgt=0;//目标串中字符的位置
intidxPtn=0;//模式串中字符的位置
intindex=0;//保存与模式串匹配ing的起始字符的位置
while(idxTgt<targetLength&&idxPtn<patternLength){
//找到一个匹配的字符
if(target.charAt(idxTgt)==pattern.charAt(idxPtn)){
//如果相等,则继续对字符进行后续的比较
idxTgt++;
idxPtn++;
}else{
//否则目标串从第二个字符开始与模式串的第一个字符重新比较
index++;
idxPtn=0;
idxTgt=index;
}
}
//匹配到一个,输出结果
if(idxPtn==patternLength){
//说明匹配成功
returnindex;
}else{
return-1;
}
}
}
使用示例:
staticintindexOf(char[]source,char[]target){
charfirst=target[0];
intmax=(source.length-target.length);
for(inti=0;i<=max;i++){
/*Lookforfirstcharacter.*/
if(source[i]!=first){
while(++i<=max&&source[i]!=first);
}
/*Foundfirstcharacter,nowlookattherestofv2*/
if(i<=max){
intj=i+1;
intend=j+target.length-1;
for(intk=1;j<end&&source[j]==target[k];j++,k++);
if(j==end){
/*Foundwholestring.*/
returni;
}
}
}
return-1;
}
以上所述就是本文的全部内容了,希望大家能够喜欢。