Bei einer gegebenen Zeichenfolge werden alle Permutationsergebnisse in Form eines Arrays angezeigt, sodass keine doppelten Ergebnisse erforderlich sind.
Zum Beispiel:
Ich habe die Zeichenfolge „aabb“ und ihr vollständiges Permutationsergebnis sollte 4*3*2*1=24 sein, aber wenn man bedenkt, dass es keine Duplikate gibt, also Das Ergebnis ist 6, wie folgt:
['aabb', 'abab', 'abba', 'baab', 'baba', 'bbaa']
Die Frage liegt also im Schlüssel in zwei Aspekten:
1. So finden Sie die vollständige Anordnung
2. Wie Sie die Ergebnisse deduplizieren
Um die vollständige Anordnung zu finden, können Sie entweder rekursiv oder nicht verwenden -rekursive Methoden.
Beim Entfernen kann ein Hash verwendet werden, um den Zweck zu erreichen.
//递归求解全排列 function permutations(string) { //用于存放去重结果的hash var hash = {}; //遍历函数 //from:要遍历的字符数组 //to:记录路径的字符数组 var traverse = function(from,to){ //若当前深度没有达到叶子 if(to.length < string.length){ for(var i=0;i<from.length;i++){ var newFrom = from.slice(0); var one = newFrom.splice(i,1); var newTo = to.slice(0); newTo = newTo.concat(one); traverse(newFrom,newTo); } } else{ //作为key存入hash hash[to.join("")] = null; } }; traverse(string.split(""),[]); //提取hash的key作为数组返回 return Object.keys(hash); }
Das Obige ist die lustige JavaScript-Frage: vollständige Anordnung und Deduplizierung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!