題目描述
題目描述
輸入一個字串,按字典序列印出該字串中字符的所有排列,例如輸入字串abc,則列印出由字符a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba,
輸入描述:
輸入一個字串,長度不超過9(可能有字符重復),字符只包括大小寫字母,
思路
基于回溯法思想

牛客網鏈接
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
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/138801.html
標籤:其他
下一篇:數論篇5——數論四大定理
