打印给定字符串的所有子字符串的程序
给定一个字符串作为输入。我们需要编写一个程序来打印给定字符串。
例子 :
Input : abcd
Output : a
b
c
d
ab
bc
cd
abc
bcd
abcd
我们可以运行三个嵌套循环,最外层循环选择一个起始字符,中间循环将所选择字符右侧的所有字符视为子字符串的结束字符。最里面的循环打印从当前选取的起点到选取的终点的字符。
C++
// C++ program to print all possible
// substrings of a given string
#include
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
Javascript
C++
// C++ program to print all possible
// substrings of a given string
#include
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
// 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
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
// 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*/
Javascript
C++
/*
* C++ program to print all possible
* substrings of a given string
* without checking for duplication.
*/
#include
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
C++
// CPP program for the above approach
#include
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
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
C++
// CPP program for the above approach
#include
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
输出
a
b
c
ab
bc
abc
方法二(使用 substr()函数)
s.substr(i, len) 从字符串s 中的索引 i 开始打印长度为 'len' 的子字符串。
C++
// C++ program to print all possible
// substrings of a given string
#include
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
// 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
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
// 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*/
Javascript
输出
a
ab
abc
abcd
b
bc
bcd
c
cd
d
此方法由Ravi Shankar Rai提供
方法3(使用前一个子串生成一个子串)
C++
/*
* C++ program to print all possible
* substrings of a given string
* without checking for duplication.
*/
#include
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
输出
G
Ge
Gee
Geek
Geeky
e
ee
eek
eeky
e
ek
eky
k
ky
y
方法4(使用三个嵌套循环)
C++
// CPP program for the above approach
#include
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
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
输出
a
ab
abc
abcd
b
bc
bcd
c
cd
d
时间复杂度: O(N 3 )
空间复杂度: O(1),其中 N 是输入字符串的长度
方法 5(使用两个嵌套循环)
C++
// CPP program for the above approach
#include
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
输出
a
ab
abc
abcd
b
bc
bcd
c
cd
d
时间复杂度:O(N2)
辅助空间:O(1),其中 N 是输入字符串的长度