本文概述
给定一个字符串作为输入。我们需要编写一个程序, 以打印该给定字符串的所有非空子字符串。
例子 :
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<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.
?>
输出如下:
a
b
c
ab
bc
abc
方法2(使用substr()函数)
s.substr(i, len)从字符串s中的索引i开始打印长度为len的子字符串。
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
// https://www.lsbin.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.lsbin.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*/
输出如下:
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<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;
}
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 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
输出如下:
G
Ge
Gee
Geek
Geeky
e
ee
eek
eeky
e
ek
eky
k
ky
y