10.4 — fixing off by 1 error.
17.6 — cleaning up code.
18.12 — minor fix.
2.1 — moving to use HashSet instead of HashTable.
3.1 — changing to use a typed exception.
9.2 — cleaning up code
2.2 — adding link to C++ code
2.4 — adding alternate solution