题目描述

题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

思路

基于回溯法思想
 用js刷剑指offer(字符串的排列) 算法

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
    }
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄