📄 bm.java
字号:
package patternMatching;
public class BM extends PatternMatcher {
static int [] patternArray ;
int l = 0;
public BM(String pattern) {
super(pattern);
patternArray = new int [256];
for (int i=0; i<patternArray.length;i++){
patternArray[i] = -1;
}
char[] tmp = pattern.toCharArray();
for ( int j =tmp.length-1; j>=0 ;j--){
if (patternArray[tmp[j]] == -1){
patternArray[tmp[j]] = j;
}
}
//System.out.println(patternArray.toString());
}
public int match(String text){
int i = getPattern().length()-1;
int j = i;
while( i < text.length()){
if (text.charAt(i)== getPattern().charAt(j)){
if (j==0){
return i;
}
else {
i--;
j--;
}
}
else {
l = patternArray[text.charAt(i)]+1;
i = i + getPattern().length() - Math.min(j, l );
j = getPattern().length() - 1;
}
}
return -1;
}
// TODO test!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
public static void main(String[] args) {
BM pattern = new BM("jflskjdmqwpeoriuqjsdfkmz.,mbnhlkxcjzvhisuafypwqoipr");
String text = "a!@#$%^&&**(())_)(!~!~`@#%&\"\\::><?;,.';[[][pajflskjdmqwpeoriuqjsdfkmz.,mbnhlkxcjzvhisuafypwqoipraaajlsdjflskjdm";
System.out.println(pattern.match(text));
//System.out.println(patternArray.toString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -