01 字符串、数字全排列 3.16
递归+循环
function fn(str){
let res = []
if(str.length == 1) return [str]
for(let i = 0; i < str.length; i++){
let rest = str.slice(0,i) + str.slice(i+1) //字符串
// let rest = str.slice(0,i).concat(str.slice(i+1)) //数字
let arr = fn(rest)
arr.forEach(item => {
res.push(str[i] + item)
})
}
return res //字符串数组
}
02 数组排成最小的数 3.18
利用sort
function fn(arr){
return arr.sort((a,b)=>{
let m = a+''+b
let n = b+''+a
for(let i =0; i<m.length; i++){
if(m.charAt(i) > n.charAt(i)){
return 1
}
if(m.charAt(i)<n.charAt(i)){
return -1
}
}
return 0
}).join('')
}
03 在一个数组中找到三个数字的和为0且不重复 3.19
排序 固定一个点 双指针
1.数组排序
2.判断是否全