Imprimiu totes les maneres de trencar una cadena en forma de suport

Imprimiu totes les maneres de trencar una cadena en forma de suport

Tenint en compte una cadena, trobeu totes les maneres de trencar la cadena donada en forma entre claudàtors. Adjunteu cada substring dins d’un parèntesi.

Exemples: 

Input : abc Output: (a)(b)(c) (a)(bc) (ab)(c) (abc) Input : abcd Output : (a)(b)(c)(d) (a)(b)(cd) (a)(bc)(d) (a)(bcd) (ab)(c)(d) (ab)(cd) (abc)(d) (abcd) 

Us recomanem fermament que minimitzeu el vostre navegador i proveu -ho primer.

La idea és utilitzar la recursió. Mantenim dos paràmetres: l’índex del següent caràcter que s’ha de processar i la cadena de sortida fins ara. Comencem des de l’índex de caràcter següent que es processi la substància append formada per cadena no processada a la cadena de sortida i recursi a la cadena restant fins que processem tota la cadena. Utilitzem std :: substr per formar la cadena de sortida. Substr (POS N) Retorna una substància de longitud N que comença a la posició POS de la cadena de corrent.

A sota del diagrama es mostra l'arbre de recursió per a la cadena d'entrada 'ABC'. Cada node del diagrama mostra cadena processada (marcada per verd) i cadena no processada (marcada per vermell).

trencament

A continuació es mostra la implementació de la idea anterior

C++
   // C++ Program to find all combinations of Non-   // overlapping substrings formed from given   // string   #include          using     namespace     std  ;   // find all combinations of non-overlapping   // substrings formed by input string str   // index – index of the next character to   // be processed   // out - output string so far   void     findCombinations  (  string     str       int     index       string     out  )   {      if     (  index     ==     str  .  length  ())      cout      < <     out      < <     endl  ;      for     (  int     i     =     index  ;     i      <     str  .  length  ();     i  ++  )      {      // append substring formed by str[index      // i] to output string      findCombinations  (      str           i     +     1        out     +     '('     +     str  .  substr  (  index       i     +     1     -     index  )      +     ')'  );      }   }   // Driver Code   int     main  ()   {      // input string      string     str     =     'abcd'  ;      findCombinations  (  str       0       ''  );      return     0  ;   }   
Java
   // Java program to find all combinations of Non-   // overlapping substrings formed from given   // string   class   GFG      {      // find all combinations of non-overlapping      // substrings formed by input string str      static     void     findCombinations  (  String     str       int     index        String     out  )      {      if     (  index     ==     str  .  length  ())      System  .  out  .  println  (  out  );          for     (  int     i     =     index  ;     i      <     str  .  length  ();     i  ++  )          // append substring formed by str[index      // i] to output string      findCombinations  (  str       i     +     1       out     +      '('     +     str  .  substring  (  index       i  +  1  )     +     ')'     );      }          // Driver Code      public     static     void     main     (  String  []     args  )         {      // input string      String     str     =     'abcd'  ;      findCombinations  (  str       0       ''  );      }   }   // Contributed by Pramod Kumar   
Python3
   # Python3 Program to find all combinations of Non-   # overlapping substrings formed from given   # string   # find all combinations of non-overlapping   # substrings formed by input string str   # index – index of the next character to   # be processed   # out - output string so far   def   findCombinations  (  string     index     out  ):   if   index   ==   len  (  string  ):   print  (  out  )   for   i   in   range  (  index     len  (  string  )   1  ):   # append substring formed by str[index   # i] to output string   findCombinations  (  string     i   +   1     out   +   '('   +   string  [  index  :  i   +   1  ]   +   ')'  )   # Driver Code   if   __name__   ==   '__main__'  :   # input string   string   =   'abcd'   findCombinations  (  string     0     ''  )   # This code is contributed by   # sanjeev2552   
C#
   // C# program to find all combinations   // of Non-overlapping substrings formed   // from given string   using     System  ;   class     GFG     {      // find all combinations of non-overlapping      // substrings formed by input string str      public     static     void      findCombinations  (  string     str       int     index       string     @out  )      {      if     (  index     ==     str  .  Length  )     {      Console  .  WriteLine  (  @out  );      }      for     (  int     i     =     index  ;     i      <     str  .  Length  ;     i  ++  )     {      // append substring formed by      // str[index i] to output string      findCombinations  (      str       i     +     1        @out     +     '('      +     str  .  Substring  (  index       (  i     +     1  )     -     index  )      +     ')'  );      }      }      // Driver Code      public     static     void     Main  (  string  []     args  )      {      // input string      string     str     =     'abcd'  ;      findCombinations  (  str       0       ''  );      }   }   // This code is contributed by Shrikant13   
JavaScript
   // Javascript program for the above approach   // find all combinations of non-overlapping   // substrings formed by input string str   // index – index of the next character to   // be processed   // out - output string so far   function     findCombinations  (  string       index       out  )     {      if     (  index     ==     string  .  length  )     {      console  .  log  (  out  );      }      for     (  let     i     =     index  ;     i      <     string  .  length  ;     i  ++  )     {      // append substring formed by str[index      // i] to output string      findCombinations  (  string       i     +     1       out     +     '('     +     string  .  substring  (  index       i     +     1  )     +     ')'  );      }   }   // Driver Code   const     string     =     'abcd'  ;   findCombinations  (  string       0       ''  );   // contributed by adityasharmadev01   

Producció
(a)(b)(c)(d) (a)(b)(cd) (a)(bc)(d) (a)(bcd) (ab)(c)(d) (ab)(cd) (abc)(d) (abcd) 

Complexitat del temps: o (n 2 Que)
Espai auxiliar: o (n 2 Que)