Поскольку вы «ищете более быстрый метод» для «поиска паттерна согласного, а затем гласного, а затем согласного», забудьте массивы и используйте регулярное выражение:
if (stringy.matches(".*(?i)[^aeiou][aeiou][^aeiou].*")) {
// string contains pattern of consonant then vowel then consonant
}
Механизмы регулярного выражения довольно быстрые, потому чтоони реализованы путем создания конечного автомата для шаблона. Нет более быстрого способа достижения того, чего вы хотите.
Написание кода также быстрее, потому что кода для написания намного меньше.
Если у вас есть коллекцияпользовательские строки ввода, чтобы найти все, что соответствует вашему целевому шаблону:
List<String> userInputStrings;
List<String> matchingStrings = userInputStrings.stream()
.filter(str -> str.matches(".*(?i)[^aeiou][aeiou][^aeiou].*"))
.collect(Collectors.toList());