Program to print all substrings of a given string
Given a string as an input. We need to write a program that will print all non-empty substrings of that given string.
Examples :
Input : abcd Output : a b c d ab bc cd abc bcd abcd
We can run three nested loops, the outermost loop picks a starting character, mid-loop considers all characters on the right of the picked character as the ending character of the substring. The innermost loop prints characters from the currently picked starting point to the picked ending point.
Implementation:
C++
// C++ program to print all possible // substrings of a given string #include<bits/stdc++.h> using namespace std; // Function to print all sub strings void subString( char str[], int n) { // Pick starting point for ( int len = 1; len <= n; len++) { // Pick ending point for ( int i = 0; i <= n - len; i++) { // Print characters from current // starting point to current ending // point. int j = i + len - 1; for ( int k = i; k <= j; k++) cout << str[k]; cout << endl; } } } // Driver program to test above function int main() { char str[] = "abc" ; subString(str, strlen (str)); return 0; } |
Java
//Java program to print all possible // substrings of a given string class GFG { // Function to print all sub strings static void subString( char str[], int n) { // Pick starting point for ( int len = 1 ; len <= n; len++) { // Pick ending point for ( int i = 0 ; i <= n - len; i++) { // Print characters from current // starting point to current ending // point. int j = i + len - 1 ; for ( int k = i; k <= j; k++) { System.out.print(str[k]); } System.out.println(); } } } // Driver program to test above function public static void main(String[] args) { char str[] = { 'a' , 'b' , 'c' }; subString(str, str.length); } } // This code is contributed by PrinciRaj1992 |
Python
# Python3 program to print all possible # substrings of a given string # Function to print all sub strings def subString( Str ,n): # Pick starting point for Len in range ( 1 ,n + 1 ): # Pick ending point for i in range (n - Len + 1 ): # Print characters from current # starting point to current ending # point. j = i + Len - 1 for k in range (i,j + 1 ): print ( Str [k],end = "") print () # Driver program to test above function Str = "abc" subString( Str , len ( Str )) # This code is contributed by mohit kumar |
C#
// C# program to print all possible // substrings of a given string using System; public class GFG { // Function to print all sub // strings static void subString( string str, int n) { // Pick starting point for ( int len = 1; len <= n; len++) { // Pick ending point for ( int i = 0; i <= n - len; i++) { // Print characters // from current // starting point to // current ending // point. int j = i + len - 1; for ( int k = i; k <= j; k++) Console.Write(str[k]); Console.WriteLine(); } } } // Driver program to test // above function static public void Main () { string str = "abc" ; subString(str, str.Length); } } // This code is contributed by anuj_67. |
PHP
<?php // PHP program to print all possible // substrings of a given string // Function to print all sub strings function subString( $str , $n ) { // Pick starting point for ( $len = 1; $len <= $n ; $len ++) { // Pick ending point for ( $i = 0; $i <= $n - $len ; $i ++) { // Print characters from current // starting point to current ending // point. $j = $i + $len - 1; for ( $k = $i ; $k <= $j ; $k ++) echo $str [ $k ]; echo "\n" ; } } } // Driver Code $str = "abc" ; subString( $str , strlen ( $str )); // This code is contributed by nitin mittal. ?> |
Javascript
<script> //Javascript program to print all possible // substrings of a given string // Function to print all sub strings function subString(str,n) { // Pick starting point for (let len = 1; len <= n; len++) { // Pick ending point for (let i = 0; i <= n - len; i++) { // Print characters from current // starting point to current ending // point. let j = i + len - 1; for (let k = i; k <= j; k++) { document.write(str[k]); } document.write( "<br>" ); } } } // Driver program to test above function let str=[ 'a' , 'b' , 'c' ]; subString(str, str.length); // This code is contributed by patel2127 </script> |
a b c ab bc abc
Time complexity: O( n3 )
Auxiliary Space: O(1)
Method 2 (Using substr() function): s.substr(i, len) prints substring of length ‘len’ starting from index i in string s.
Implementation:
C++
// C++ program to print all possible // substrings of a given string #include<bits/stdc++.h> using namespace std; // Function to print all sub strings void subString(string s, int n) { // Pick starting point in outer loop // and lengths of different strings for // a given starting point for ( int i = 0; i < n; i++) for ( int len = 1; len <= n - i; len++) cout << s.substr(i, len) << endl; } // Driver program to test above function int main() { string s = "abcd" ; subString(s,s.length()); return 0; } |
Java
// Java program to print all substrings of a string public class GFG { // Function to print all substring public static void SubString(String str, int n) { for ( int i = 0 ; i < n; i++) for ( int j = i+ 1 ; j <= n; j++) // Please refer below article for details // of substr in Java System.out.println(str.substring(i, j)); } public static void main(String[] args) { String str = "abcd" ; SubString(str, str.length()); } } // This code is contributed by ASHISH KUMAR PATEL |
Python3
# Python program to print all possible # substrings of a given string # Function to print all sub strings def subString(s, n): # Pick starting point in outer loop # and lengths of different strings for # a given starting point for i in range (n): for len in range (i + 1 ,n + 1 ): print (s[i: len ]); # Driver program to test above function s = "abcd" ; subString(s, len (s)); # This code is contributed by princiraj1992 |
C#
// C# program to print all substrings of a string using System; public class GFG { // Function to print all substring public static void SubString(String str, int n) { for ( int i = 0; i < n; i++) for ( int j = 1; j <= n - i; j++) // Please refer below article for details // of substr in Java Console.WriteLine(str.Substring(i, j)); } public static void Main() { String str = "abcd" ; SubString(str, str.Length); } } /*This code is contributed by PrinciRaj1992*/ |
Javascript
<script> // javascript program to print all substrings of a string // Function to print all substring function SubString( str , n) { for ( var i = 0; i < n; i++) for ( var j = i+1; j <= n; j++) // Please refer below article for details // of substr in Java document.write(str.substring(i, j)+ "<br/>" ); } var str = "abcd" ; SubString(str, str.length); // This code is contributed by gauravrajput1 </script> |
a ab abc abcd b bc bcd c cd d
Time complexity: O( n^2 )
Auxiliary Space: O(1)
This method is contributed by Ravi Shankar Rai
Method 3 (Generate a substring using the previous substring):
Implementation:
C++
/* * C++ program to print all possible * substrings of a given string * without checking for duplication. */ #include<bits/stdc++.h> using namespace std; /* * Function to print all (n * (n + 1)) / 2 * substrings of a given string s of length n. */ void printAllSubstrings(string s, int n) { /* * Fix start index in outer loop. * Reveal new character in inner loop till end of string. * Print till-now-formed string. */ for ( int i = 0; i < n; i++) { char temp[n - i + 1]; int tempindex = 0; for ( int j = i; j < n; j++) { temp[tempindex++] = s[j]; temp[tempindex] = '\0' ; printf ( "%s\n" , temp); } } } // Driver program to test above function int main() { string s = "Geeky" ; printAllSubstrings(s, s.length()); return 0; } |
Java
// Java program to print all possible // subStrings of a given String // without checking for duplication. import java.io.*; class GFG{ // Function to print all (n * (n + 1)) / 2 // subStrings of a given String s of length n. public static void printAllSubStrings(String s, int n) { // Fix start index in outer loop. // Reveal new character in inner // loop till end of String. // Print till-now-formed String. for ( int i = 0 ; i < n; i++) { char [] temp = new char [n - i + 1 ]; int tempindex = 0 ; for ( int j = i; j < n; j++) { temp[tempindex++] = s.charAt(j); temp[tempindex] = '\0' ; System.out.println(temp); } } } // Driver code public static void main(String[] args) { String s = "Geeky" ; printAllSubStrings(s, s.length()); } } // This code is contributed by avanitrachhadiya2155 |
Python3
''' * Python3 program to print all possible * substrings of a given string * without checking for duplication. ''' ''' * Function to print all (n * (n + 1)) / 2 * substrings of a given string s of length n. ''' def printAllSubstrings(s, n): # Fix start index in outer loop. # Reveal new character in inner loop till end of string. # Print till-now-formed string. for i in range (n): temp = "" for j in range (i,n): temp + = s[j] print (temp) # Driver program to test above function s = "Geeky" printAllSubstrings(s, len (s)) # This code is contributed by shubhamsingh10 |
C#
// C# program to print all possible // subStrings of a given String // without checking for duplication. using System; class GFG{ // Function to print all (n * (n + 1)) / 2 // subStrings of a given String s of length n. public static void printAllSubStrings(String s, int n) { // Fix start index in outer loop. // Reveal new character in inner // loop till end of String. // Print till-now-formed String. for ( int i = 0; i < n; i++) { char [] temp = new char [n - i + 1]; int tempindex = 0; for ( int j = i; j < n; j++) { temp[tempindex++] = s[j]; temp[tempindex] = '\0' ; Console.WriteLine(temp); } } } // Driver code public static void Main() { String s = "Geeky" ; printAllSubStrings(s, s.Length); } } // This code is contributed by Shubhamsingh10 |
Javascript
<script> // Javascript program to print all possible // subStrings of a given String // without checking for duplication. // Function to print all (n * (n + 1)) / 2 // subStrings of a given String s of length n. function printAllSubStrings(s, n) { // Fix start index in outer loop. // Reveal new character in inner // loop till end of String. // Print till-now-formed String. for (let i = 0; i < n; i++) { let temp = new Array(n - i + 1); let tempindex = 0; for (let j = i; j < n; j++) { temp[tempindex++] = s[j]; temp[tempindex] = '\0' ; document.write(temp.join( "" ) + "</br>" ); } } } let s = "Geeky" ; printAllSubStrings(s, s.length); </script> |
G Ge Gee Geek Geeky e ee eek eeky e ek eky k ky y
Time complexity: O( n2 )
Auxiliary Space: O(n)
Method 4 (using three nested loops):
Implementation:
C++
// CPP program for the above approach #include <iostream> using namespace std; void printSubstrings(string str) { // finding the length of the string int n = str.length(); // outermost for loop // this is for the selection // of starting point for ( int i = 0; i < n; i++) { // 2nd for loop is for selection // of ending point for ( int j = i; j < n; j++) { // 3rd loop is for printing from // starting point to ending point for ( int k = i; k <= j; k++) { cout << str[k]; } // changing the line after printing // from starting point to ending point cout << endl; } } } // Driver Code int main() { string str = "abcd" ; printSubstrings(str); return 0; } |
C
// C program for the above approach #include <stdio.h> void printSubstrings( char str[]) { // outermost for loop // this is for the selection // of starting point for ( int start = 0; str[start] != '\0' ; start++) { // 2nd for loop is for selection // of ending point for ( int end = start; str[end] != '\0' ; end++) { // 3rd loop is for printing from // starting point to ending point for ( int i = start; i <= end; i++) { printf ( "%c" , str[i]); } // changing the line after printing // from starting point to ending point printf ( "\n" ); } } } // Driver Code int main() { // code char str[] = { 'a' , 'b' , 'c' , 'd' , '\0' }; // calling the method to print the substring printSubstrings(str); return 0; } |
Java
// Java program for the above approach import java.io.*; class GFG { public static void printSubstrings(String str) { // finding the length of the string int n = str.length(); // outermost for loop // this is for the selection // of starting point for ( int i = 0 ; i < n; i++) { // 2nd for loop is for selection // of ending point for ( int j = i; j < n; j++) { // 3rd loop is for printing from // starting point to ending point for ( int k = i; k <= j; k++) { System.out.print(str.charAt(k)); } // changing the line after printing // from starting point to ending point System.out.println(); } } } // Driver Code public static void main(String[] args) { String str = "abcd" ; // calling method for printing substring printSubstrings(str); } } |
Python3
# Python program for the above approach def printSubstrings(string, n): # this is for the selection # of starting point for i in range (n): # 2nd for loop is for selection # of ending point for j in range (i, n): # 3rd loop is for printing from # starting point to ending point for k in range (i, (j + 1 )): print (string[k], end = "") # changing the line after printing # from starting point to ending point print () # Driver Code string = "abcd" # calling the method to print the substring printSubstrings(string, len (string)) |
C#
// C# program for the above approach using System; public class GFG { public static void printSubstrings(String str) { // finding the length of the string int n = str.Length; // outermost for loop // this is for the selection // of starting point for ( int i = 0; i < n; i++) { // 2nd for loop is for selection // of ending point for ( int j = i; j < n; j++) { // 3rd loop is for printing from // starting point to ending point for ( int k = i; k <= j; k++) { Console.Write(str[k]); } // changing the line after printing // from starting point to ending point Console.WriteLine(); } } } // Driver Code public static void Main(String[] args) { String str = "abcd" ; // calling method for printing substring printSubstrings(str); } } // This code is contributed by gauravrajput1 |
Javascript
<script> // JavaScript program for the above approach function printSubstrings(str) { // finding the length of the string var n = str.length; // outermost for loop // this is for the selection // of starting point for ( var i = 0; i < n; i++) { // 2nd for loop is for selection // of ending point for ( var j = i; j < n; j++) { // 3rd loop is for printing from // starting point to ending point for ( var k = i; k <= j; k++) { document.write(str.charAt(k)); } // changing the line after printing // from starting point to ending point document.write( "<br>" ); } } } // Driver Code var str = "abcd" ; // calling method for printing substring printSubstrings(str); // This code is contributed by shivanisinghss2110 </script> |
a ab abc abcd b bc bcd c cd d
Time complexity: O(N3), where N is the length of the input string
Auxiliary Space: O(1)
Method 5 (Using two nested loops):
Implementation:
C++
// CPP program for the above approach #include <iostream> using namespace std; void printSubstrings(string str) { // First loop for starting index for ( int i = 0; i < str.length(); i++) { string subStr; // Second loop is generating sub-string for ( int j = i; j < str.length(); j++) { subStr += str[j]; cout << subStr << endl; } } } // Driver Code int main() { string str = "abcd" ; printSubstrings(str); return 0; // this code is contributed by defcdr } |
Java
// JAVA program for the above approach import java.util.*; class GFG{ static void printSubStrings(String str) { // First loop for starting index for ( int i = 0 ; i < str.length(); i++) { String subStr= "" ; // Second loop is generating sub-String for ( int j = i; j < str.length(); j++) { subStr += str.charAt(j); System.out.print(subStr + "\n" ); } } } // Driver Code public static void main(String[] args) { String str = "abcd" ; printSubStrings(str); } } // This code is contributed by gauravrajput1 |
Python3
# Python program for the above approach def printSubStrings( str ): # First loop for starting index for i in range ( len ( str )): subStr = ""; # Second loop is generating sub-String for j in range (i, len ( str )): subStr + = str [j]; print (subStr + ""); # Driver Code if __name__ = = '__main__' : str = "abcd" ; printSubStrings( str ); # This code is contributed by umadevi9616 |
C#
// C# program for the above approach using System; public class GFG{ static void printSubStrings(String str) { // First loop for starting index for ( int i = 0; i < str.Length; i++) { String subStr= "" ; // Second loop is generating sub-String for ( int j = i; j < str.Length; j++) { subStr += str[j]; Console.Write(subStr + "\n" ); } } } // Driver Code public static void Main(String[] args) { String str = "abcd" ; printSubStrings(str); } } // This code is contributed by gauravrajput1 |
Javascript
<script> // javascript program for the above approach function printSubStrings( str) { // First loop for starting index for (i = 0; i < str.length; i++) { var subStr = "" ; // Second loop is generating sub-String for ( var j = i; j < str.length; j++) { subStr += str.charAt(j); document.write(subStr + "<br/>" ); } } } // Driver Code var str = "abcd" ; printSubStrings(str); // This code is contributed by gauravrajput1 </script> |
a ab abc abcd b bc bcd c cd d
Time complexity: O(N2), where N is the length of the input string.
Auxiliary Space: O(N), where N is the length of the input string.
Please Login to comment...