Program to print all substrings of a given string - GeeksforGeeks

04 Feb, 2022
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. 
C++
Java
Python
C#
PHP
Javascript
// C++ program to print all possible// substrings of a given string #include<bits/stdc++.h>using namespace std; // Function to print all sub stringsvoid 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 functionint main(){    char str[] = "abc";    subString(str, strlen(str));    return 0;}
//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
# Python3 program to print all possible# substrings of a given string  # Function to print all sub stringsdef 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 functionStr = "abc"subString(Str,len(Str)) # This code is contributed by mohit kumar
// C# program to print all possible// substrings of a given stringusing 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 program to print all possible// substrings of a given string // Function to print all sub stringsfunction 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.?>
<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
Method 2 (Using substr() function) s.substr(i, len) prints substring of length ‘len’ starting from index i in string s.
C++
Java
Python3
C#
Javascript
// C++ program to print all possible// substrings of a given string#include<bits/stdc++.h>using namespace std; // Function to print all sub stringsvoid 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 functionint main(){    string s = "abcd";    subString(s,s.length());    return 0;}
// Java program to print all substrings of a stringpublic 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                // https://www.geeksforgeeks.org/java-lang-string-substring-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
     # Python program to print all possible# substrings of a given string  # Function to print all sub stringsdef 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 functions = "abcd";subString(s,len(s)); # This code is contributed by princiraj1992
// C# program to print all substrings of a stringusing 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                // https://www.geeksforgeeks.org/java-lang-string-substring-java/                Console.WriteLine(str.Substring(i, j));    }     public static void Main()    {        String str = "abcd";        SubString(str, str.Length);    }} /*This code is contributed by PrinciRaj1992*/
<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                // https://www.geeksforgeeks.org/java-lang-string-substring-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
This method is contributed by Ravi Shankar Rai
Method 3 (Generate a substring using the previous substring)
C++
Java
Python3
C#
Javascript
/* * 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 functionint main(){    string s = "Geeky";    printAllSubstrings(s, s.length());    return 0;}
// 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 codepublic static void main(String[] args){    String s = "Geeky";         printAllSubStrings(s, s.length());}} // This code is contributed by avanitrachhadiya2155
'''* 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# 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 codepublic static void Main(){    String s = "Geeky";         printAllSubStrings(s, s.Length);}} // This code is contributed by Shubhamsingh10
<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
Method 4 (using three nested loops)
C++
C
Java
Python3
C#
Javascript
// 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 Codeint main(){    string str = "abcd";    printSubstrings(str);     return 0;}
// 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 Codeint main(){     // code    char str[] = { 'a', 'b', 'c', 'd', '\0' };    // calling the method to print the substring    printSubstrings(str);    return 0;}
// Java program for the above approachimport 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);    }}
# Python program for the above approachdef 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 Codestring = "abcd"# calling the method to print the substringprintSubstrings(string, len(string))
// C# program for the above approachusing 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
<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)
Space complexity: O(1), where N is the length of the input string
Method 5 (Using two nested loops)
C++
Java
Python3
C#
Javascript
// 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 program for the above approachimport 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 Codepublic static void main(String[] args){    String str = "abcd";    printSubStrings(str);}} // This code is contributed by gauravrajput1
# Python program for the above approachdef 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 Codeif __name__ == '__main__':    str = "abcd";    printSubStrings(str);     # This code is contributed by umadevi9616
// C# program for the above approachusing 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 Codepublic static void Main(String[] args){    String str = "abcd";    printSubStrings(str);}} // This code is contributed by gauravrajput1
<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)Auxiliary Space: O(1), where N is the length of the input string
nitin mittal
vt_m
princiraj1992
mohit kumar 29
KrishnaBirla
SHUBHAMSINGH10
avanitrachhadiya2155
le0
patel2127
decode2207
GauravRajput1
simranarora5sos
shivanisinghss2110
DefCdr
umadevi9616
simmytarika5
School Programming
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Interfaces in Java
Constructors in C++
Operator Overloading in C++
Copy Constructor in C++
Polymorphism in C++
Write a program to reverse an array or string
Write a program to print all permutations of a given string
C++ Data Types
Longest Common Subsequence | DP-4
Check for Balanced Brackets in an expression (well-formedness) using Stack