Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 给定字符串复杂度的所有置换_Javascript_Algorithm - Fatal编程技术网

Javascript 给定字符串复杂度的所有置换

Javascript 给定字符串复杂度的所有置换,javascript,algorithm,Javascript,Algorithm,我写了这个字符串所有排列的解。我有一个关于这个解决方案的时间和空间复杂性的问题。 我假设时间复杂度为O(n³),因为嵌套循环和递归,而空间复杂度为O(n),因为递归 我的假设正确吗?如果是,是否有更好的性能解决方案 输入:“ABC” 输出:['ABC','ACB','BAC','BCA','CAB','CBA'] 谢谢 函数置换(字符串){ //基本情况 如果(字符串长度

我写了这个字符串所有排列的解。我有一个关于这个解决方案的时间和空间复杂性的问题。 我假设时间复杂度为O(n³),因为嵌套循环和递归,而空间复杂度为O(n),因为递归

我的假设正确吗?如果是,是否有更好的性能解决方案

输入:“ABC”

输出:['ABC','ACB','BAC','BCA','CAB','CBA']

谢谢

函数置换(字符串){
//基本情况
如果(字符串长度<2){
返回字符串;
}
var permutations=[];//此数组将保存我们的置换
对于(变量i=0;i
存在
O(n!)
长度为
n
的字符串排列

在生成置换中的每个字符串时,您通过使用一个for循环来执行
O(string.length)=O(n)

可能不太清楚为什么会有
n,但您正在使用剩余字符串递归调用置换(…)
函数,因此字符串长度将为n*(n-1)*(n-2)*(n-3)*……*一,

因此,算法的时间复杂度是
O(n*n!)

其他流行的已知解决方案(基于交换的,与您的类似,以及基于下一个置换的)具有相同的时间复杂性