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