📜  字符串的所有子辞书级联

📅  最后修改于: 2021-04-29 02:39:37             🧑  作者: Mango

给定一个字符串,按字典顺序查找所有子字符串的串联。

例子:

1.查找字符串的所有子字符串并将其存储在字符串数组中。数组的大小为n *(n + 1)/ 2,其中n是输入字符串的长度。
2.对字符串数组进行排序,以按字典顺序排列它们。
3.将字符串数组的字符串连接到另一个空字符串。

C++
// CPP Program to create concatenation of all
// substrings in lexicographic order.
#include 
using namespace std;
  
string lexicographicSubConcat(string s)
{
    int n = s.length();
  
    // Creating an array to store substrings
    int sub_count = n*(n+1)/2;
    string arr[sub_count];     
  
    // finding all substrings of string
    int index = 0;
    for (int i = 0; i < n; i++) 
        for (int len = 1; len <= n - i; len++) 
            arr[index++] = s.substr(i, len);
      
    // Sort all substrings in lexicographic
    // order
    sort(arr, arr + sub_count); 
  
    // Concatenating all substrings
    string res = "";
    for (int i = 0; i < sub_count; i++) 
        res += arr[i];     
          
    return res;    
}
  
int main()
{
    string s = "abc"; 
    cout << lexicographicSubConcat(s);
    return 0;
}


Java
// Java Program to create concatenation of all
// substrings in lexicographic order.
import java.util.*;
  
class GFG 
{
      
  
static String lexicographicSubConcat(String s)
{
    int n = s.length();
  
    // Creating an array to store substrings
    int sub_count = n*(n+1)/2;
    String []arr = new String[sub_count];     
  
    // finding all substrings of string
    int index = 0;
    for (int i = 0; i < n; i++) 
        for (int len = 1; len <= n - i; len++) 
        {
                arr[index++] = s.substring(i, i+len);
        }
    // Sort all substrings in lexicographic
    // order
    Arrays.sort(arr); 
  
    // Concatenating all substrings
    String res = "";
    for (int i = 0; i < sub_count; i++) 
        res += arr[i];     
          
    return res; 
}
  
// Driver code
public static void main(String[] args) 
{
    String s = "abc"; 
    System.out.println(lexicographicSubConcat(s));
}
}
  
// This code has been contributed by 29AjayKumar


Python3
# Python Program to create concatenation of all
# substrings in lexicographic order.
  
def lexicographicSubConcat(s):
    n = len(s);
  
    # Creating an array to store substrings
    sub_count = (n * (n + 1))//2;
    arr = [0]*sub_count;     
  
    # finding all substrings of string
    index = 0;
    for i in range(n):
        for j in range(1,n - i + 1):
            arr[index] = s[i:i + j];
            index += 1;
      
    # Sort all substrings in lexicographic
    # order
    arr.sort(); 
  
    # Concatenating all substrings
    res = "";
    for i in range(sub_count):
        res += arr[i];     
          
    return res; 
  
s = "abc"; 
print(lexicographicSubConcat(s));
  
# This code is contributed by Princi Singh


C#
// C# Program to create concatenation of all
// substrings in lexicographic order.
using System;     
      
class GFG 
{
      
static String lexicographicSubConcat(String s)
{
    int n = s.Length;
  
    // Creating an array to store substrings
    int sub_count = n*(n+1)/2;
    String []arr = new String[sub_count];     
  
    // finding all substrings of string
    int index = 0;
    for (int i = 0; i < n; i++) 
        for (int len = 1; len <= n - i; len++) 
        {
            arr[index++] = s.Substring(i, len);
        }
          
    // Sort all substrings in lexicographic
    // order
    Array.Sort(arr); 
  
    // Concatenating all substrings
    String res = "";
    for (int i = 0; i < sub_count; i++) 
        res += arr[i];     
          
    return res; 
}
  
// Driver code
public static void Main(String[] args) 
{
    String s = "abc"; 
    Console.WriteLine(lexicographicSubConcat(s));
}
}
  
/* This code contributed by PrinciRaj1992 */


输出:

aababcbbcc