⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bm.java

📁 三种字符串匹配:BF
💻 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 + -