Unknown преди 6 години
родител
ревизия
f075bbdc04
променени са 1 файла, в които са добавени 9 реда и са изтрити 6 реда
  1. 9 6
      src/main/java/me/shedaniel/rei/client/SearchArgument.java

+ 9 - 6
src/main/java/me/shedaniel/rei/client/SearchArgument.java

@@ -30,20 +30,23 @@ public class SearchArgument {
     }
     
     public static int boyerMooreHorspoolSearch(CharSequence pattern, CharSequence text) {
+        int patternLength = pattern.length();
+        if (patternLength == 0)
+            return 0;
         int shift[] = new int[256];
         for(int k = 0; k < 256; k++)
-            shift[k] = pattern.length();
-        for(int k = 0; k < pattern.length() - 1; k++)
-            shift[pattern.charAt(k)] = pattern.length() - 1 - k;
+            shift[k] = patternLength;
+        for(int k = 0; k < patternLength - 1; k++)
+            shift[pattern.charAt(k)] = patternLength - 1 - k;
         int i = 0, j = 0;
-        while ((i + pattern.length()) <= text.length()) {
-            j = pattern.length() - 1;
+        while ((i + patternLength) <= text.length()) {
+            j = patternLength - 1;
             while (text.charAt(i + j) == pattern.charAt(j)) {
                 j -= 1;
                 if (j < 0)
                     return i;
             }
-            i = i + shift[text.charAt(i + pattern.length() - 1)];
+            i = i + shift[text.charAt(i + patternLength - 1)];
         }
         return -1;
     }