En este artículo, vamos a ver que podemos generar todas las combinaciones posibles de una string dada usando métodos o conceptos de JavaScript.
Se le da una string que contiene diferentes caracteres, debe generar todas las combinaciones de una string seleccionando un carácter a la vez y luego reorganizando ese carácter con otros caracteres de tal manera que todas las combinaciones puedan generarse e imprimirse fácilmente en nuestro producción.
Hay varios enfoques para resolver este problema en particular y discutiremos cada uno de ellos uno por uno, pero primero entendamos qué es exactamente lo que necesitamos implementar.
Las siguientes representaciones pictóricas describen el escenario de generar todas las combinaciones posibles de una string dada.
Dog => Possible Combination [D], [Do], [Dog], [o], [og], [g]
Como ejemplo (mencionado en la representación pictórica anterior), una string llamada «Perro» se puede dividir en varias strings como «D», «Do», etc.
Los siguientes son los varios enfoques para generar todas las combinaciones de una string en JavaScript-
Enfoque 1:
- En este enfoque, usaremos la estructura de datos llamada array y ejecutaremos dos bucles for en la string dada, que en realidad es la parte lógica principal de nuestro código.
- Además, usaremos el método .push() y .slice() para agregar nuestro resultado a una array.
Ejemplo:
Javascript
<script> let possibleCombinations = (str) =>{ let combinations = []; for(let i = 0 ;i < str.length; i++) { for(let j = i + 1; j< str.length + 1; j++) { combinations.push(str.slice(i , j)); } } return combinations; } console.log(possibleCombinations('Dog')); </script>
Salida: La salida del programa anterior será la siguiente.
[ 'd', 'do', 'dog', 'o', 'og', 'g' ]
Enfoque 2:
- En este enfoque, nuevamente usaremos una array como nuestra variable de impresión de resultados y tomaremos nuestro valor de índice actual como valor inicial (que es 0).
- Luego ejecutaremos un ciclo while y dentro de ese ciclo while almacenaremos nuestro carácter presente en nuestro valor de índice actual usando el método .charAt() .
- Luego declararemos una array temporal en la que almacenaremos ese carácter obtenido.
- Luego, ejecutaremos un bucle for-in en el que empujaremos nuestro resultado y luego agregaremos nuestro resultado en la variable de resultado usando el método .concat() y luego incrementaremos nuestro valor de variable de índice actual.
Ejemplo:
Javascript
<script> let stringCombinations = (str) => { let strLength = str.length; let result = []; let currentIndex = 0; while (currentIndex < strLength) { let char = str.charAt(currentIndex); let x; let arrTemp = [char]; for (x in result) { arrTemp.push("" + result[x] + char); } result = result.concat(arrTemp); currentIndex++; } return result; }; console.log(stringCombinations("dog")); </script>
Salida: La salida del código anterior será la siguiente.
[ 'd', 'o', 'do', 'g', 'dg', 'og', 'dog' ]
Enfoque 3:
- En este enfoque, usaremos dos arrays, una es temporal que inicialmente almacenará nuestros resultados y al final agregaremos nuestros resultados en la segunda array de resultados.
- Aquí usaremos primero un bucle for y dentro de ese bucle agregaremos cada carácter de una string en la array temporal y luego tomaremos el valor de índice inicial como 0.
- Luego, dentro del ciclo while, usaremos el método .push() para insertar nuestro resultado en la array temporal e incrementar el valor del índice actual.
- Luego, después del bucle while, agregaremos el resultado a nuestra array de resultados desde la array temporal y luego imprimiremos la array de resultados.
Ejemplo:
Javascript
<script> let combinations = (str) => { let tempArr = []; let resultArr = []; for (let i = 0; i < str.length; i++) { tempArr = [str[i]]; let index = 0; while (resultArr[index]) { tempArr.push("" + resultArr[index] + str[i]); index++; } resultArr = resultArr.concat(tempArr); } return resultArr; }; console.log(combinations("dog")); </script>
Salida: La salida del programa anterior será.
[ 'd', 'o', 'do', 'g', 'dg', 'og', 'dog' ]
Publicación traducida automáticamente
Artículo escrito por amansingla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA