The Algorithms logo
The Algorithms
AboutDonate

Count Words

L
package com.thealgorithms.others;

import java.util.Scanner;

/**
 * You enter a string into this program, and it will return how many words were
 * in that particular string
 *
 * @author Marcus
 */
public class CountWords {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter your text: ");
        String str = input.nextLine();

        System.out.println("Your text has " + wordCount(str) + " word(s)");
        System.out.println(
            "Your text has " + secondaryWordCount(str) + " word(s)"
        );
        input.close();
    }

    private static int wordCount(String s) {
        if (s == null || s.isEmpty()) {
            return 0;
        }
        return s.trim().split("[\\s]+").length;
    }

    /**
     * counts the number of words in a sentence but ignores all potential
     * non-alphanumeric characters that do not represent a word. runs in O(n)
     * where n is the length of s
     *
     * @param s String: sentence with word(s)
     * @return int: number of words
     */
    private static int secondaryWordCount(String s) {
        if (s == null || s.isEmpty()) {
            return 0;
        }
        StringBuilder sb = new StringBuilder();
        for (char c : s.toCharArray()) {
            if (Character.isLetter(c) || Character.isDigit(c)) {
                sb.append(c);
            }
        }
        s = sb.toString();
        return s.trim().split("[\\s]+").length;
    }
}