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

ID: 3686491 • Letter: I

Question

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

Program which Generates SubStrings using Recursive Method

SubStringRecursive.java

package org.students;

import java.util.Scanner;

public class SubStringRecursive {
   // Declaring Static variable
   static String in = null;

   public static void main(String[] args) {
       // Getting the String From the user.
       System.out.print("Enter the String(Without Spaces) ::");
       Scanner sc = new Scanner(System.in);
       in = sc.next();
       System.out.println("The SubStrings for '"+in+"' are:");
       // Calling the method
       substrings(0, 1);
   }

   // Method which contains code to generates Substrings
   static void substrings(int start, int end) {

       if (start == in.length() && end == in.length()) {
           return;
       } else {
           if (end == in.length() + 1) {
               substrings(start + 1, start + 1);
           } else {

               System.out.println(in.substring(start, end));
               substrings(start, end + 1);
           }
       }
   }

}

______________________________________________________________________________________________

Output:

Enter the String(Without Spaces) ::hello
The SubStrings for 'hello' are:
h
he
hel
hell
hello

e
el
ell
ello

l
ll
llo

l
lo

o

_________________________________________________________________________________________

Output2:

Enter the String(Without Spaces) ::abc
The SubStrings for 'abc' are:
a
ab
abc

b
bc

c

_______________________________________________________________________________________________

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