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; }
以上所述就是本文的全部内容了,希望大家能够喜欢。