1. In the first exercise, you will implement a hashing algorithm where the collision handling is done via linear probing. You will also implement it in a space efficient way as described in class. In particular you will implement the following four methods. You are provided with two Java files one called Hash.java and the other HashWithLinearProbing.java . You will find some helper methods and constructor in these files that you may use. You will test your code with words from EnglishWordList.txt. Note that by definition the hash table wont store duplicates. However, you are not allowed to pre-process the word list file to eliminate duplicates first and then try to load the words into the hash table. You should let the method arrayHashWithLinearProbing() handle this part. Pay attention to efficiency of implementation.
public void arrayHashWithLinearProbing() {
}
public boolean contains ( String p) {
}
public void printStatistics () {
}
public static void main (String[] args) {
// will load EnglishWorldList into the hashTable.
}
You will write a Java program to solve the Jumble problem using our EnglishWordList word list file. Jumble problem goes like this. You are given a string S containing only English alphabet. Examples are: gintsr, melrobp, ogd, zkdyzp. The first three when unjumbled properly are actually English words that you can find in our word list. And they are string, problem, and god, respectively. The fourth one, no matter what combination you try, will not give rise to a legit English word as per our dictionary. Also for a particular jumbled word say ogd, there may be more than one English word that corresponds to it such as in this case, god, dog. You code will take in a jumbled string S and do one of two things: either (i) outputs all legitimate words that can be formed by unjumbling using our word list, or (ii) say that the jumbled string has no equivalent unjumbled word in our word list. To get an idea of this Jumble game you can refer to the website http://jumblesolver.me/ . Your code needs to reflect efficiency of algorithm and data structures for which some credit is assigned. So correctness alone will not be sufficient to get full credit for this problem.