Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Implement a SubstringGenerator class that generates all substrings of a string r

ID: 3823509 • Letter: I

Question

Implement a SubstringGenerator class that generates all substrings of a string recursively. (JAVA)

For example, the substrings of the string “rum” are the seven strings: “rum”, “ru”, “r”, “um”, “u”, “m”, “”

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 is not important, as long as your generator produces all substrings correctly).

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 "abc123"

Actual:   '' '3' '2' '23' '1' '12' '123' 'c' 'c1' 'c12' 'c123' 'b' 'bc' 'bc1' 'bc12' 'bc123' 'a' 'ab' 'abc' 'abc1' 'abc12' 'abc123'

Expected: '' '3' '2' '23' '1' '12' '123' 'c' 'c1' 'c12' 'c123' 'b' 'bc' 'bc1' 'bc12' 'bc123' 'a' 'ab' 'abc' 'abc1' 'abc12' 'abc123'

The issue I am having is with the starter code I was given:

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
      
      
      
      
      
      
       // 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;
   }
}

I can't seem to find any answer of how to do it through an arraylist method
This is the given tester method as well:

import java.util.ArrayList;

public class SubstringTester {
   public static void main(String[] args) {
       ArrayList<String> substrings = SubstringGenerator.getSubstrings("ab");
       System.out.println("Substrings of "ab"");
       System.out.print("Actual:   ");
       for (String s : substrings) {
           System.out.print("'" + s + "' ");
       }
       System.out.println();
       System.out.println("Expected: '' 'b' 'a' 'ab'");
       System.out.println();
      
      
       substrings = SubstringGenerator.getSubstrings("abc");
       System.out.println("Substrings of "abc"");
       System.out.print("Actual:   ");
       for (String s : substrings) {
           System.out.print("'" + s + "' ");
       }
       System.out.println();
       System.out.println("Expected: '' 'c' 'b' 'bc' 'a' 'ab' 'abc'");
       System.out.println();
      
      
       substrings = SubstringGenerator.getSubstrings("rum");
       System.out.println("Substrings of "rum"");
       System.out.print("Actual:   ");
       for (String s : substrings) {
           System.out.print("'" + s + "' ");
       }
       System.out.println();
       System.out.println("Expected: '' 'm' 'u' 'um' 'r' 'ru' 'rum'");
       System.out.println();
      
      
      
       System.out.println("Substrings of "abc123"");
       substrings = SubstringGenerator.getSubstrings("abc123");
       System.out.print("Actual:   ");
       for (String s : substrings) {
           System.out.print("'" + s + "' ");
       }
       System.out.println();
       System.out.println("Expected: '' '3' '2' '23' '1' '12' '123' 'c' 'c1' 'c12' 'c123' 'b' 'bc' 'bc1' 'bc12' 'bc123' 'a' 'ab' 'abc' 'abc1' 'abc12' 'abc123'");
   }
}

Explanation / Answer

import java.util.ArrayList;

public class SubstringGenerator {
   public static ArrayList<String> getSubstrings(String word) {
  
       ArrayList<String> result = new ArrayList<String>();

if(string.length()==0)

{

result.add(string);

return result;

}

for(int j=0;j<string.length()-1;j>=0;j--)

for(int i=j;i< string.length();i++)

String.shortstring=string.substring(0,j);

ResultGerator shorterPermutationGenerator= new ResultGenerator(shortestring);

ArrayList<String> shortstringPermutation = shortstringPermutations.getresult();

result.add(s+ string.charAt(i));

}

}

return result;

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote