Java - Написание счетчика слогов на основе спецификаций

Спецификация для слога:

Каждая группа смежных гласных (a, e, i, o, u, y) считается одним слогом (например, «ea» в «real» добавляет один слог, но «e ... a» in »regal) "считается как два слога). Однако «е» в конце слова не считается слогом. Также каждое слово имеет хотя бы один слог, даже если в предыдущих правилах счетчик равен нулю.

Мой метод countSyllables:

public int countSyllables(String word) {
    int count = 0;
    word = word.toLowerCase();
    for (int i = 0; i < word.length(); i++) {
        if (word.charAt(i) == '\"' || word.charAt(i) == '\'' || word.charAt(i) == '-' || word.charAt(i) == ',' || word.charAt(i) == ')' || word.charAt(i) == '(') {
            word = word.substring(0,i)+word.substring(i+1, word.length());
        }
    }
    boolean isPrevVowel = false;
    for (int j = 0; j < word.length(); j++) {
        if (word.contains("a") || word.contains("e") || word.contains("i") || word.contains("o") || word.contains("u")) {
            if (isVowel(word.charAt(j)) && !((word.charAt(j) == 'e') && (j == word.length()-1))) {
                if (isPrevVowel == false) {
                    count++;
                    isPrevVowel = true;
                }
            } else {
                isPrevVowel = false;
            }
        } else {
            count++;
            break;
        }
    }
    return count;
}

Метод isVowel, который определяет, является ли буква гласной:

public boolean isVowel(char c) {
        if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
            return true;
        } else {
            return false;
        }
    }

По словам коллеги, это должно привести к 528 слогам при использовании наэтот текст, но я, кажется, могу сделать это равным этому, и я не знаю, кто из нас прав. Пожалуйста, помогите мне развить мой метод в правильный алгоритм или помогите показать, что это правильно. Спасибо.

Ответы на вопрос(7)

Ваш ответ на вопрос