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 starting character, mid loop considers all characters on right of the picked character as ending character of substring. The innermost loop prints characters from currently picked starting point to picked ending point.
C++
// 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
//Java program to print all possible// substrings of a given stringclass 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 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#
// 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// 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.?> |
Output:
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++
// 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
// 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 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 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#
// 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 Console.WriteLine(str.Substring(i, j)); } public static void Main() { String str = "abcd"; SubString(str, str.Length); }}/*This code is contributed by PrinciRaj1992*/ |
Output:
a ab abc abcd b bc bcd c cd d
This method is contributed by Ravi Shankar Rai
Method 3 (Generate a substring using previous substring)
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 functionint main() { string s = "Geeky"; printAllSubstrings(s, s.length()); return 0;} |
Python3
'''* Python3 program to prall possible* substrings of a given string* without checking for duplication.''''''* Function to prall (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. # Prtill-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 functions = "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 codepublic static void Main(){ String s = "Geeky"; printAllSubStrings(s, s.Length);}}// This code is contributed by Shubhamsingh10 |
Output:
G Ge Gee Geek Geeky e ee eek eeky e ek eky k ky y
This method has been contributed by Krishna Birla.
This article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
Recommended Posts:
- Generate a string whose all K-size substrings can be concatenated to form the given string
- Lexicographically smallest permutation of a string that contains all substrings of another string
- Count the number of vowels occurring in all the substrings of given string
- Lexicographically all Shortest Palindromic Substrings from a given string
- Count of substrings of a given Binary string with all characters same
- Print Kth character in sorted concatenated substrings of a string
- Minimum number of substrings the given string can be splitted into that satisfy the given conditions
- Reverse the substrings of the given String according to the given Array of indices
- Sum of all substrings of a string representing a number | Set 1
- Sum of all substrings of a string representing a number | Set 2 (Constant Extra Space)
- Find the starting indices of the substrings in string (S) which is made by concatenating all words from a list(L)
- Check if all substrings of length K of a Binary String has equal count of 0s and 1s
- Lexicographic rank of a string among all its substrings
- Lexicographical concatenation of all substrings of a string
- Minimum changes to a string to make all substrings distinct
- Write a program to print all permutations of a given string
- Different substrings in a string that start and end with given strings
- Permutation of given string that maximizes count of Palindromic substrings
- Repeat substrings of the given String required number of times
- Queries to find the count of vowels in the substrings of the given string

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
