<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/*************************************************************************
 *  Compilation:  javac Concordance.java
 *  Execution:    java Concordance &lt; input.txt
 *  Dependencies: ST.java SET.java In.java StdIn.java
 *
 *  % java Concordance tale.txt
 *  cities
 *  tongues of the two *cities* that were blended in 
 *
 *  majesty
 *  their turnkeys and the *majesty* of the law fired 
 *  me treason against the *majesty* of the people in 
 *  of his most gracious *majesty* king george the third 
 *
 *  princeton
 *
 *************************************************************************/

public class Concordance {

    public static void main(String[] args) {
        int CONTEXT = 5;

        In in = new In(args[0]);
        String[] words = in.readAll().split("\\s+");
        ST&lt;String, SET&lt;Integer&gt;&gt; st = new ST&lt;String, SET&lt;Integer&gt;&gt;();

        // build up concordance
        for (int i = 0; i &lt; words.length; i++) {
            String s = words[i];
            if (!st.contains(s)) {
                st.put(s, new SET&lt;Integer&gt;());
            }
            SET&lt;Integer&gt; set = st.get(s);
            set.add(i);
        }
        StdOut.println("Finished building concordance");

        // process queries
        while (!StdIn.isEmpty()) {
            String query = StdIn.readString();
            SET&lt;Integer&gt; set = st.get(query);
            if (set == null) set = new SET&lt;Integer&gt;();
            for (int k : set) {
                for (int i = Math.max(0, k - CONTEXT + 1); i &lt; k; i++)
                    StdOut.print(words[i] + " ");
                StdOut.print("*" + words[k] + "* ");
                for (int i = k + 1; i &lt; Math.min(k + CONTEXT, words.length); i++)
                    StdOut.print(words[i] + " ");
                StdOut.println();
            }
            StdOut.println();
        }
   
    }
}
</pre></body></html>