boolean match = false; int index = -1; for (int i = 0; i < source.length(); i++) { for (int j = 0; j < pattern.length(); j++) { if (source.charAt(i + j) != pattern.charAt(j)) { break; } if (j == pattern.length() - 1) { match = true; index = i; } } if (match) { break; } }
/** * eg. A B C A B D * -1 0 0 0 1 2 * @param pattern pattern string * @return next table of pattern string */ private int[] calculateNext(String pattern) { int[] next = new int[pattern.length()];
int j = 0; for (int i = 0; i < next.length; i++) { if (i < 2) { next[i] = i - 1; continue; }