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

E13.12 – Implement a SubstringGenerator (class) that generates all substrings of

ID: 3686973 • Letter: E

Question

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

“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'

Explanation / Answer

import java.util.Scanner;

public class SubstringGenerator {

   public static void generate2(String word) {
        for (int from = 0; from < word.length(); from++) {
            for (int to = from + 1; to <= word.length(); to++) {
                System.out.print(word.substring(from, to)+" ");
            }
        }
   }
  
   public static void main(String[] args) {
      
       Scanner sc = new Scanner(System.in);
       System.out.print("Enter a string: ");
       String s = sc.next();
      
       // printing all substring
       generate2(s);
   }
}


/*

Output:

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

*/