Как получить все комбинации строки, удаляя 4 символа каждый раз?
Я пытаюсь создать функцию в JavaScript, которая для данной строки будет выводить все возможные комбинации, удаляя ТОЛЬКО 4 символа из строки каждый раз. Как я могу вывести все комбинации? Длина начальной строки является динамической. Спасибо заранее.
** Примечание:** Порядок удаления 4 символов не всегда должен быть последовательным
Пример:
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
Хотите напечатать все возможные комбинации, как это:
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)
-
-
2 ответа
Предположим, что длина строки 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
}
}
}
}
Несколько псевдокодов для рекурсивной функции:
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, '')