题解 | #字符串的排列#
字符串的排列
http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
//substring 用于字符串....charAt(i)用于字符串索引
//n!递归找出口的方法是,递归函数同时传递res。当满足结束条件就push进res
function Permutation(str)
{
// write code here
if(str=="")return []
let res=[]
test(str,res,0)
return res
}
function test(str,res,star){
if(str.length-1==star){
if(has(res,str)<0){
res.push(str)
}
}
else{
for(let i=star;i<str.length;i++){
let str1=''
for(let j=0;j<str.length;j++){
if(j==i){str1=str1+str.charAt(star)}
else if(j==star){str1=str1+str.charAt(i)}
else{str1=str1+str.charAt(j)}
}
str=str1
console.log(str)
test(str,res,star+1)
let str2=''
for(let j=0;j<str.length;j++){
if(j==i){str2=str2+str.charAt(star)}
else if(j==star){str2=str2+str.charAt(i)}
else{str2=str2+str.charAt(j)}
}
str=str2
console.log(str)
}
}
}
function has(arr,str){
for(let i=0;i<arr.length;i++){
if(arr[i]==str){
return i
}
}
return -1
}
module.exports = {
Permutation : Permutation
};