还是第一次听说这个叫做KMP的算法,孤陋寡闻了。查了半天资料看的云里雾里的
,写资料的都喜欢整术语,生怕别人看懂。干脆不看了,自己去写。那位给拍拍砖
package com.saturday;
public class KMP {
public static String myReplaceAll(
String input,
String replaced){
//短路掉不可能匹配的情况
if(replaced.equals("")
||input.length()
return input;
}
StringBuffer buf=new StringBuffer();
char[] s=input.toCharArray();
char[] r=replaced.toCharArray();
int rLen=r.length;
int matchCount;
for(int i=0,sLen=s.length;i
if(i
//检查匹配
matchCount=0;
for(int j=0;j
if(s[i+j]==r[j]){
matchCount++;
}else{
break;
}
}
//完全匹配
if(matchCount==rLen){
i+=rLen;
continue;
}
//部分匹配
if(matchCount>0){
for(int j=0;j
buf.append(s[i++]);
}
continue;
}
}
buf.append(s[i++]);
}
return buf.toString();
}
public static void main(String[] args){
String input="123 mfc mf fc mfdC mfmfc cmfc dd abc";
String replaced="1234";
System.out.println(
myReplaceAll(input,replaced).equals(input.replaceAll(replaced,""))
);
}
}