用js刷剑指offer(字符串的排列)
题目描述
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
思路
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。js代码
function Permutation(str)
{
// write code here
if (str === '') return []
let arr = str.split('')
let res = []
Help(arr, 0)
return res.sort()
function Help(arr, i) {
if (i === arr.length-1) {
if (!res.includes(arr.join(''))) {
res.push(arr.join(''))
return
}
}
for(let j = i; j < arr.length; j++) {
swap(arr, i, j)
Help(arr, i+1)
swap(arr, i, j)
}
}
function swap (arr, i, j) {
let temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
更多精彩