Changed implementation of the method that manually count words in a string for originality.

This commit is contained in:
alfred.samanga@gmail.com 2019-08-18 20:31:07 +02:00
parent f9cf8eefe2
commit 0c27e46de3

View File

@ -3,11 +3,14 @@ package com.baeldung.string.wordcount;
import java.util.StringTokenizer; import java.util.StringTokenizer;
public class WordCounter { public class WordCounter {
static final int WORD = 0;
static final int SEPARATOR = 1;
public static int countWordsUsingRegex(String arg) { public static int countWordsUsingRegex(String arg) {
if (arg == null) { if (arg == null) {
return 0; return 0;
} }
final String[] words = arg.split("\\pP|\\s+"); final String[] words = arg.split("[\\pP\\s]+");
return words.length; return words.length;
} }
@ -23,21 +26,19 @@ public class WordCounter {
if (arg == null) { if (arg == null) {
return 0; return 0;
} }
int flag = SEPARATOR;
int count = 0; int count = 0;
int stringLength = arg.length();
int characterCounter = 0;
boolean isAWord = false; while (characterCounter < stringLength) {
int argEnd = arg.length() - 1; if (Character.isLetter(arg.charAt(characterCounter)) && flag == SEPARATOR) {
flag = WORD;
for (int i = 0; i < arg.length(); i++) {
if (Character.isLetter(arg.charAt(i)) && i != argEnd) {
isAWord = true;
} else if (!Character.isLetter(arg.charAt(i)) && isAWord) {
count++;
isAWord = false;
} else if (Character.isLetter(arg.charAt(i)) && i == argEnd) {
count++; count++;
} else if (!Character.isLetter(arg.charAt(characterCounter))) {
flag = SEPARATOR;
} }
characterCounter++;
} }
return count; return count;
} }