Given a string s of length n, the task is to print all its non-empty substrings.
Input: "abc"
Output: a, ab, abc, b, bc, c
Input: "abcd"
Output: a, ab, abc, abcd, b, bc, bcd, c, cd, d
Solutions
Method 1: Using "substring()" function
In this approach, we run two nested loops.
The outer loop picks a starting character at i th index.
The inner loop considers the picked character (j=i) and all characters on the right of it. (unitl n-1)
In each iteration of the inner loop, we use substring() function to print a substring from i to j+1.
Complexity
The time complexity of this solution is O(n^3) and space complexity is O(1).
Method 2: Using three loops
In this approach, we can run three nested loops.
The outermost loop picks a starting character at i th index.
The mid-loop considers the picked character (j=i) and all characters on the right of it. (unitl n-1)
The innermost loop prints characters from the currently picked starting point (i) to the picked ending point (j).
Complexity
The time complexity of this solution is O(n^3) and space complexity is O(1).
Method 3: Using two loops
In this approach, we run two nested loops and also use a variable "ss" to store the previous sub-string.
The outer loop picks a starting character at i th index.
The inner loop considers the picked character (j=i) and all characters on the right of it. (unitl n-1)
For a given sub-string the inner loop keeps on adding the next characters to the variable "ss" and also prints them in each iteration.
Complexity
The time complexity of this solution is O(n^2) and space complexity is O(n).