This Java code implements the Boyer-Moore string searching algorithm. It takes a pattern string and text as input, uses the Boyer-Moore algorithm to search for the pattern in the text, and outputs the offset of the match or indicates no match. The key parts of the algorithm pre-process the pattern to build a table of rightmost occurrences of each character, then iteratively searches the text by shifting the pattern by the maximum amount possible after each mismatch.
This Java code implements the Boyer-Moore string searching algorithm. It takes a pattern string and text as input, uses the Boyer-Moore algorithm to search for the pattern in the text, and outputs the offset of the match or indicates no match. The key parts of the algorithm pre-process the pattern to build a table of rightmost occurrences of each character, then iteratively searches the text by shifting the pattern by the maximum amount possible after each mismatch.
This Java code implements the Boyer-Moore string searching algorithm. It takes a pattern string and text as input, uses the Boyer-Moore algorithm to search for the pattern in the text, and outputs the offset of the match or indicates no match. The key parts of the algorithm pre-process the pattern to build a table of rightmost occurrences of each character, then iteratively searches the text by shifting the pattern by the maximum amount possible after each mismatch.
This Java code implements the Boyer-Moore string searching algorithm. It takes a pattern string and text as input, uses the Boyer-Moore algorithm to search for the pattern in the text, and outputs the offset of the match or indicates no match. The key parts of the algorithm pre-process the pattern to build a table of rightmost occurrences of each character, then iteratively searches the text by shifting the pattern by the maximum amount possible after each mismatch.
private final int R; private int[] right; private char[] pattern; private String pat;
public BoyerMoore(String pat) {
this.R = 256; this.pat = pat;
// position of rightmost occurrence of c in the pattern
right = new int[R]; for (int c = 0; c < R; c++) right[c] = -1; for (int j = 0; j < pat.length(); j++) right[pat.charAt(j)] = j; }
public int search(String txt) {
int M = pat.length(); int N = txt.length(); int skip; for (int i = 0; i <= N - M; i += skip) { skip = 0; for (int j = M-1; j >= 0; j--) { if (pat.charAt(j) != txt.charAt(i+j)) { skip = Math.max(1, j - right[txt.charAt(i+j)]); break; } } if (skip == 0) return i; } return N; }
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("generated_text.txt")); String pattern = reader.readLine(); String text = reader.readLine(); reader.close();