/*****************************************************************************
 *  Name:
 *  NetID:
 *  Precept:
 *
 *  Description: Counts the number of times each String has occurred.
 *
 *  % more duckduckgoose.txt
 *  duck duck goose
 *
 *  % java-introcs FrequencyTable < duckduckgoose.txt
 *  duck 2
 *  goose 1
 *
 *  Remarks:
 *   - This is book/booksite Exercise 4.4.45
 *   - Use with mobydick.txt, available on the precepts page.
 *
 *****************************************************************************/

public class FrequencyTable {
       // Dependencies: ST.java (available on precepts page), StdIn, StdOut
       // maintain counts of all words seen so far
       // the key is the word and the value is the count
       private ST<_________________> st = ___________________________;
   
       // NOTE! We have not provided a constuctor! But Java gives every class 
       // a no-argument constructor by default. It only runs code above 
       // (instance variable initialization).
   
       // add 1 to the frequency of this word
       public void increment(String word) {
           int count = frequencyOf(word);
           st.put(word, count + 1);
       }
   
       // what is the frequency of this word?
       public int frequencyOf(String word) {
           if (!st.__________(______)) return 0;  // if word is not in ST
           else return st._____(______);          // get word's count
       }
   
       // return string representation of frequency table
       public String toString() {
           StringBuilder sb = new StringBuilder();
           
           // foreach loop goes through all keys in alphabetical order
           for (String word : st.keys()) {
        
            // print out the word and its frequency, separated by a space
               sb.append(______ + " " + ___________(______) + "\n");
           }
           return sb.toString();
       }
   
       // method used by client to count all words in StdIn
       public static void main(String[] args) {
   
           // build frequency table from words on standard input
           FrequencyTable freq = new FrequencyTable();
           while (!StdIn.isEmpty()) {
               String word = StdIn.readString();
               freq.___________(word);
           }
   
           // print frequency table to standard output
           StdOut.println(freq);
       }
}