Todas las strings posibles de cualquier longitud que se pueden formar a partir de una string dada

Dada una string de caracteres distintos, imprima todas las strings posibles de cualquier longitud que se puedan formar a partir de caracteres de string dados.

Ejemplos:

Input: abc
Output: a b c abc ab ac bc bac bca 
         cb ca ba cab cba acb

Input: abcd
Output: a b ab ba c ac ca bc cb abc acb bac
         bca cab cba d ad da bd db abd adb bad 
         bda dab dba cd dc acd adc cad cda dac 
         dca bcd bdc cbd cdb dbc dcb abcd abdc 
         acbd acdb adbc adcb bacd badc bcad bcda 
         bdac bdca cabd cadb cbad cbda cdab cdba 
         dabc dacb dbac dbca dcab dcba 

La generación de todas las strings incluye los siguientes pasos.
1) Generar todas las subsecuencias de la string dada .
2) Para cada subsecuencia ‘subs’, imprime todas las permutaciones de ‘subs’

A continuación se muestra la implementación de C++. Utiliza la función next_permutation en C++ .

C/C++

/*  C++ code to generate all possible strings
    that can be formed from given string */
#include<bits/stdc++.h>
using namespace std;
  
void printAll(string str)
{
    /* Number of subsequences is (2**n -1)*/
    int n = str.length();
    unsigned int opsize = pow(2, n);
  
    /* Generate all subsequences of a given string.
       using counter 000..1 to 111..1*/
    for (int counter = 1; counter < opsize; counter++)
    {
        string subs = "";
        for (int j = 0; j < n; j++)
        {
            /* Check if jth bit in the counter is set
                If set then print jth element from arr[] */
            if (counter & (1<<j))
                subs.push_back(str[j]);
        }
  
        /* Print all permutations of current subsequence */
        do
        {
            cout << subs << " ";
        }
        while (next_permutation(subs.begin(), subs.end()));
    }
}
  
// Driver program
int main()
{
    string str = "abc";
    printSubsequences(str);
    return 0;
}

Python3

# Python3 code to generate all possible strings
# that can be formed from given string 
from itertools import permutations 
    
def printAll( st):
      
    # Number of subsequences is (2**n -1)
    n = len(st)
    opsize = pow(2, n)
   
    # Generate all subsequences of a given string.
    #  using counter 000..1 to 111..1
    for counter in range(1, opsize):
      
        subs = ""
        for j in range(n):
          
            # Check if jth bit in the counter is set
            #   If set then print jth element from arr[] 
            if (counter & (1<<j)):
                subs += (st[j])
   
        # Print all permutations of current subsequence 
        perm = permutations(subs)
          
        for i in perm:
            print(''.join(i),end=" ")
              
# Driver program
if __name__ == "__main__":
      
    st = "abc"
    printAll((st))
      
# This code is contributed by chitranayal

Producción:

a b ab ba c ac ca bc cb abc acb bac bca cab cba

Este artículo es una contribución de Hardik Gaur . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *