2017-08-06 1 views
0

J'essaye de créer une fonction en JavaScript qui pour une chaîne donnée produira toutes les combinaisons possibles en enlevant SEULEMENT 4 caractères de la chaîne chaque fois. Comment puis-je sortir toutes les combinaisons? La longueur de la chaîne de départ est dynamique.Merci à l'avance.Comment obtenir toutes les combinaisons d'une chaîne en supprimant 4 caractères à chaque fois?

** Note: ** L'ordre d'enlever 4 caractères ne doit pas être toujours consécutifs

Exemple:

string:BmamdWRtaW51dGfVzZMI= //B m a m d W R t a W 5 1 d G f V z Z M I = 
          // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 

Vous voulez imprimer toutes les combinaisons possibles comme ceci:

BmamdWRtaW51dGfVzZMI= (starting string) 
-dWRtaW51dGfVzZMI=  (removed first 4 characters) 
-BWRtaW51dGfVzZMI=  (removed 4 consecutive charaters start from 2th character) 
-BmRtaW51dGfVzZMI=  (removed 4 consecutive charaters start from 3th character) 
-BmataW51dGfVzZMI=  (removed 4 consecutive charaters start from 4th character) 
- 
- 
+1

Avez-vous essayé une approche particulière à ce jour? – Nisarg

+1

Les 4 caractères sont-ils toujours consécutifs? –

+0

Merci pour les réponses. @ Jean-Claude Colette les 4 caractères ne doivent pas toujours être consécutifs je veux imprimer toutes les combinaisons possibles. – user1788736

Répondre

3

Supposons n la longueur de la chaîne str

for (a=0; a<n-3; a++) { 
    for (b=a+1; b<n-2; b++) { 
     for (c=b+1; c<n-1; c++) { 
      for (d=c+1; d<n; d++) { 
       //delete the ath, bth, cth and dth charaters of the initial string 
       result = str.substr(0, a)+str.substr(a+1, b-a-1)+str.substr(b+1, c-b-1)+str.substr(c+1, d-c-1)+str.substr(d+1); 

       //and print the result 
      } 
     } 
    } 
} 
+1

Faites attention si vous supprimez vraiment les caractères des chaînes pas à pas: le moyen le plus simple de le faire est de supprimer d'abord le caractère avec l'indice le plus élevé, puis le précédent. Sinon, vous devez corriger les indices de restes. –

+0

@ Jean-Claude Colette Merci par exemple .Quelle variable est la chaîne initiale et pourquoi vous avez mentionné de supprimer 3 lettres au lieu de 4? Comment commencer à supprimer 4 caractères de chaque combinaison de chaîne de départ? Par exemple pour une taille de chaîne de 21 combinaisons de 17 chaînes de caractères seront produites? – user1788736

+1

str est la chaîne initiale, et j'extrais les sous-chaînes au début, entre chacune et la dernière. –

0

Certains pseudo-code pour une fonction récursive:

myFunction (charactersRemoved, remainingString, previousString): 

if charactersRemoved === 4 then echo previousString + remainingString 
return 

foreach character in remainingString 
remainingString -= character 
myFunction (charactersRemoved + 1, remainingString, previousString) 
previousString += character 
endfor 

endfunction 

myFunction(0, string, '')