Text: must be in Java:
Do not need a tester.
Complete the code:
import java.util.ArrayList;
public class SubstringGenerator {
public static ArrayList<String> getSubstrings(String word) {
// This is the value you will return
ArrayList<String> result = new ArrayList<String>();
// Come up with a base case first
if (word.length() == 0) {
result.add(word);
return result;
}
for (int i = 1; i <= word.length(); i++) {
String shorter = word.substring(1, i) + word.substring(i + 1);
ArrayList<String> shorterSubstrings = getSubstrings(shorter);
for (String s : shorterSubstrings) {
result.add(word.charAt(0) + s);
}
}
// Below here is the recursive case
// Form a simpler word by removing the first character
// Generate all substrings of the simpler word
// This is where you will make a recursive call
// You can store the result from this temporary call in
// your results ArrayList
// Add all strings that start with word.charAt(0)
// You will need a loop here
// Return all substrings
return result;
}
}
The outcome:
Tasks: Follow the directions below to complete your lab assignment.
For today's lab, we will be completing Exercise E13.12 from the book. Starter code is included on Google Drive - SubstringTester.java and SubstringGenerator.java.
E13.12 - Implement a SubstringGenerator class that generates all substrings of a string recursively. For example, the substrings of the string "rum" are the seven strings.
Hint: First enumerate all substrings that start with the first character. There are n of them if the string has length n. Then enumerate the substrings of the string that you obtain by removing the first character.
Here is what your output should look like after your project is completed. (The order of your substrings may vary)
Substrings of "ab" Actual: 'b' 'a' 'ab' Expected: 'b' 'a' 'ab'
Substrings of "abc" Actual: 'c' 'b' 'bc' 'a' 'ab' 'abc' Expected: 'c' 'b' 'bc' 'a' 'ab' 'abc'
Substrings of "abcl23" Actual: '3' '2' '23' '1' '12' '123' 'c' 'c1' 'c12' 'c123' 'b' 'bc' 'bcl' 'bcl2' 'bcl23' 'a' 'ab' 'abc' 'abcl' 'abcl2' 'abcl23