/****************************************************************************** * Compilation: javac FrequencyCounter.java * Execution: java FrequencyCounter L < input.txt * Dependencies: ST.java StdIn.java StdOut.java * Data files: https://algs4.cs.princeton.edu/31elementary/tinyTale.txt * https://algs4.cs.princeton.edu/31elementary/tale.txt * https://algs4.cs.princeton.edu/31elementary/leipzig100K.txt * https://algs4.cs.princeton.edu/31elementary/leipzig300K.txt * https://algs4.cs.princeton.edu/31elementary/leipzig1M.txt * * Read in a list of words from standard input and print out * the most frequently occurring word that has length greater than * a given threshold. * * % java FrequencyCounter 1 < tinyTale.txt * it 10 * * % java FrequencyCounter 8 < tale.txt * business 122 * * % java FrequencyCounter 10 < leipzig1M.txt * government 24763 * * ******************************************************************************/ /** * The {@code FrequencyCounter} class provides a client for * reading in a sequence of words and printing a word (exceeding * a given length) that occurs most frequently. It is useful as * a test client for various symbol table implementations. *
* For additional documentation, see Section 3.1 of
* Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.
*
* @author Robert Sedgewick
* @author Kevin Wayne
*/
public class FrequencyCounter {
// Do not instantiate.
private FrequencyCounter() { }
/**
* Reads in a command-line integer and sequence of words from
* standard input and prints out a word (whose length exceeds
* the threshold) that occurs most frequently to standard output.
* It also prints out the number of words whose length exceeds
* the threshold and the number of distinct such words.
*
* @param args the command-line arguments
*/
public static void main(String[] args) {
int distinct = 0, words = 0;
int minlen = Integer.parseInt(args[0]);
ST