Самое простое решение, которое я могу придумать, состоит в следующем:
Проверьте, заканчивается ли слово заданным суффиксом:
public static boolean endsWith(String word, String suffix) {
if(suffix.length() > word.length()) {
return false;
}
int textIndex = (word.length() - 1);
int suffixIndex = (suffix.length() - 1);
while(suffixIndex >= 0) {
char textChar = word.charAt(textIndex);
char suffixChar = suffix.charAt(suffixIndex);
if(textChar != suffixChar) {
return false;
}
textIndex--;
suffixIndex--;
}
return true;
}
Разделите данное в его словах ииспользуйте вышеуказанный метод для подсчета каждого слова, заканчивающегося данным окончанием:
public static int countEndings(String text, String ending) {
{
//maybe remove punctuation here...
//(if yes, use String.replace for example)
}
String[] words = text.split(" ");
int counter = 0;
for(String word: words) {
if(endsWith(word, ending)) {
counter++;
}
}
return counter;
}
Также рассмотрите возможность удаления нежелательной пунктуации, например '!'или же '?'(...) - приведенная выше реализация не распознает любое слово, заканчивающееся t
в String
test!
!