算法题(如何打印给定字符串的所有子字符串())

本文概述

  • C ++
  • Java
  • python
  • C#
  • 的PHP
  • C ++
  • Java
  • Python3
  • C#
  • C ++
  • Python3
  • C#
给定一个字符串作为输入。我们需要编写一个程序, 以打印该给定字符串的所有非空子字符串。
例子 :
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

    推荐阅读