资讯网站开发的背景,做淘宝还有必要做网站吗,锦州网站制作,免费网站建设入门题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 分析 没啥好分析的了#xff0c;这个题不会#xff0c;上网查的思路#xff0c;大概就是#xff1a; abc分化…题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 分析 没啥好分析的了这个题不会上网查的思路大概就是 abc分化为abc、bac、cba这是0和0交换、0和1交换、0和2交换 第一步得出的abc分化为abc、acb这是1和1交换、1和2交换 第一步得出的bac分化为bac、bca这是1和1交换、1和2交换 第一步得出的cba分化为cba、cab这是1和1交换、1和2交换 代码实现 function Permutation(str)
{if(str null || str )return [];var res [];var index 0;step(str.split(), index, res);return res.sort();
}function step(strArr, cur, res) {if(cur strArr.length-1){var i 0, str ;while(i strArr.length){str strArr[i];}res.push(str);}for(var i cur;i strArr.length;i) {if(strArr[i] strArr[cur] i ! cur)continue;swap(strArr, i, cur);step(strArr, cur1, res);swap(strArr, i, cur);}
}function swap(arr, a, b) {var temp arr[a];arr[a] arr[b];arr[b] temp;
}
复制代码