Results 1 to 3 of 3
- 05-23-2012, 08:46 PM #1
Member
- Join Date
- May 2012
- Posts
- 14
- Rep Power
- 0
Anagram solver help using recursive backtracking
Okay so I have to write a class that takes a string passed in and solves all of the anagrams for that phrase(I just have to write the class that handles the main, as the instructor already wrote the main method in a class for us. I am a little lost on where to go after getting past the constructor. We have to write the following methods:
public Anagrams(Set<String> dictionary)
In this constructor you should initialize a new anagram solver over the given dictionary of words. You may assume that
the words in the set are in alphabetical order. Do not modify the set passed to your constructor.
You should throw an IllegalArgumentException if the set passed is null.
public Set<String> getWords(String phrase)
In this method you should return a set containing all words from the dictionary that can be made using some or all of the
letters in the given phrase, in alphabetical order. For example, if your anagram solver is using the dictionary
corresponding to dict1.txt and you are passed the phrase "Barbara Bush", you should return a set containing the
elements [abash, aura, bar, barb, brush, bus, hub, rub, shrub, sub].
You should throw an IllegalArgumentException if the string is null.
public void print(String phrase)
In this method you should use recursive backtracking to find and print all anagrams that can be formed using all of the
letters of the given phrase, in the same order and format as in the example log on the previous page. For example, if your
anagram solver is using the dictionary corresponding to dict1.txt and you are passed the phrase "hairbrush", your
method should produce the following output:
[bar, huh, sir]
[bar, sir, huh]
[briar, hush]
[huh, bar, sir]
[huh, sir, bar]
[hush, briar]
[sir, bar, huh]
[sir, huh, bar]
You should throw an IllegalArgumentException if the string is null. An empty string generates no output.
public void print(String phrase, int max)
In this method you should use recursive backtracking to find and print all anagrams that can be formed using all of the
letters of the given phrase and that include at most max words total, in the same order and format as in the example log on
the previous page. For example, if your anagram solver is using the dictionary corresponding to dict1.txt and this
method is passed a phrase of "hairbrush" and a max of 2, your method should produce the following output:
[briar, hush]
[hush, briar]
If max is 0, print all anagrams regardless of how many words they contain. For example, if using the same dictionary and
passed a phrase of "hairbrush" and a max of 0, the output is the same as that shown earlier on this page with no max.
You should throw an IllegalArgumentException if the string is null or if the max is less than 0. An empty string
generates no output.
The provided AnagramMain program calls your methods in a 1-to-1 relationship, calling getWords every time before
calling print. But you should not assume any particular order of calls by the client. Your code should still work if the
methods are called in any order, any number of times.
I am just having trouble getting started with the getWords method and on so any pointing in the right direction is greatly appreciated. Thanks, and here is my extremely empty code atm:Java Code:We also have a helper class to use to help us accomplish this. It contains the following methods: public LetterInventory(String s) --- constructs a letter inventory for the given string public void add(LetterInventory li) public void add(String s) --- adds the letters of the given string/inventory to this one public boolean contains(LetterInventory li) public boolean contains(String s) --- returns true if this inventory contains all letters at least as many times as they appear in the given string/inventory public boolean isEmpty() --- returns true if the inventory contains no letters public int size() --- returns the total number of letters in the inventory public void subtract(LetterInventory li) public void subtract(String s) --- removes letters of the given string/inventory from this one; throws IllegalArgumentException if not contained public String toString() --- string version of inventory, such as "[eehhllort]"
Java Code:import java.util.Set; import java.util.TreeSet; public class Anagrams { private Set<String> anagramDict; public Anagrams(Set<String> dictionary){ if (dictionary == null){ throw new IllegalArgumentException(); } anagramDict = new TreeSet<String>(dictionary); } public Set<String> getWords(String phrase){ if (phrase == null){ throw new IllegalArgumentException(); } return null; } public void print(String phrase){ } public void print(String phrase, int max){ } }
- 05-23-2012, 10:50 PM #2
Re: Anagram solver help using recursive backtracking
So, your getWords() method takes a string, and returns a set of strings. Why might one convert a string into a set of strings and how might one go about it? If you were doing it on paper, how would you do it?
- 05-24-2012, 03:47 AM #3
Member
- Join Date
- May 2012
- Posts
- 14
- Rep Power
- 0
Re: Anagram solver help using recursive backtracking
Well I am not sure but I don't think I need to do that. I think I just have to compare String phrase with the "dictionary" file that the main handles to produce the options of anagrams. I think I would have to instanciate a Set and convert the original set that the constructor is passed to strings to compare to String phrase and then put the strings into the Set I instanciated inside the getWords method and return it. I just don't know how I will compare them to see if it's an anagram. Is it as simple as using the String .contains method?
Similar Threads
-
Recursion Backtracking
By 6thDAY in forum Advanced JavaReplies: 1Last Post: 03-28-2011, 04:06 PM -
Backtracking
By pali185 in forum New To JavaReplies: 2Last Post: 12-17-2010, 01:08 PM -
need help with backtracking
By Dumisan in forum Advanced JavaReplies: 9Last Post: 02-17-2010, 01:02 PM -
Recursive Anagram
By zoe in forum Advanced JavaReplies: 1Last Post: 08-07-2007, 06:15 AM


LinkBack URL
About LinkBacks
Reply With Quote

Bookmarks