给定一个字符串作为输入。我们需要编写一个程序来打印给定字符串的所有非空子字符串。
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