用于打印给定字符串的所有子字符串的程序

给定一个字符串作为输入。我们需要编写一个程序来打印给定字符串的所有非空子字符串。

null

例如:

Input :  abcdOutput :  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 "" ;
}
}
}
// 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>


输出

abcabbcabc

方法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
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>


输出

aababcabcdbbcbcdccdd

这种方法是由 拉维·尚卡尔·雷

方法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] = ' ' ;
printf ( "%s" , 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] = ' ' ;
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] = ' ' ;
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] = ' ' ;
document.write(temp.join( "" ) + "</br>" );
}
}
}
let s = "Geeky" ;
printAllSubStrings(s, s.length);
</script>


输出

GGeGeeGeekGeekyeeeeekeekyeekekykkyy

方法4(使用三个嵌套循环)

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] != ' ' ; start++) {
// 2nd for loop is for selection
// of ending point
for ( int end = start; str[end] != ' ' ; 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 ( "" );
}
}
}
// Driver Code
int main()
{
// code
char str[] = { 'a' , 'b' , 'c' , 'd' , ' ' };
// 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>


输出

aababcabcdbbcbcdccdd

时间复杂性: O(N) 3. )

空间复杂性: O(1),其中N是输入字符串的长度

方法5(使用两个嵌套循环)

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 + "" );
}
}
}
// 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 + "" );
}
}
}
// 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>


输出

aababcabcdbbcbcdccdd

时间复杂度:O(N2) 辅助空间 :O(1),其中N是输入字符串的长度

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享