Подсчёт повторений букв

Написал программу подсчёта повторений буквосочетний. Программа считает, но больше, чем надо - 148. Правильный ответ 22. Не пойму что надо поправить. Прошу помощи.

public class Main {
public static final String TEXT = "aaababaabaaaabaabaabaabaaababaabaaababaabaaaabaabaabaabbabaabaaababaababaabaabaabaaabbaab";
public static final String PATTERN = "aab";

public static void main(String[] args) {
    int count = 0;

    for (int i = 0; i < TEXT.length(); i++) {
       char ch = TEXT.charAt(i);
      
     
      for (int a = 0; a < PATTERN.length(); a++) {
        char c1 = PATTERN.charAt(a);
        if (ch == c1) {
        count++;
        }
    }
      }

    System.out.println("Строка " + PATTERN + " встретилась в тексте " + count + " раз");
}
}

Ответы (1 шт):

Автор решения: Nowhere Man

Можно/проще использовать String::indexOf(String substr, int fromIndex):

public static int count(String text, String sub) {
    int count = 0;
    int pos = 0;
    while ((pos = text.indexOf(sub, pos)) != -1) {
        count++;
        pos += sub.length();
    }
    return count;
}

public static final String TEXT = "aaababaabaaaabaabaabaabaaababaabaaababaabaaaabaabaabaabbabaabaaababaababaabaabaabaaabbaab";
public static final String PATTERN = "aab";


System.out.println(count(TEXT, PATTERN)); // -> 22

Аналогично, можно построить регулярное выражение при помощи Pattern.compile/Pattern.quote и посчитать количество совпадений:

import static java.util.regex.Pattern.*;

// ...

public static int countRegex(String text, String sub) {
    return (int) compile(quote(sub)).matcher(text).results().count();
}
→ Ссылка