劍指 Offer 38 字串的排列

2022-09-04 21:45:19 字數 1074 閱讀 7028

輸入乙個字串,列印出該字串中字元的所有排列。

你可以以任意順序返回這個字串陣列,但裡面不能有重複元素。

方法一:回溯

/*

* * @param s

* @return */

var permutation = function

(s)

for(let j=0;j)

perm.push(arr[j]);

vis[j] = true

; backtrack(i+1);

perm.pop();

vis[j] = false

; }

}backtrack(0);

return

res;

};

let s = 'abc';

console.log(s, permutation(s))

s = 'aca';

console.log(s, permutation(s))

方法二:下乙個排列

/*

* * @param s

* @return */

var permutation = function

(s)

if(i<0)

let j = n - 1;

while(j>=0 && a[i]>=a[j])

[a[i], a[j]] =[a[j], a[i]];

arr = .concat(a.slice(0, i+1), a.slice(i+1).reverse());

return

true

; }

dowhile

(nextpermutation(arr))

return

res;

};

示例:

輸入:s = "abc"

輸出:["abc","acb","bac","bca","cab","cba"]

限制:

1 <= s 的長度 <= 8

劍指Offer 38 字串的排列

輸入乙個字串,列印出該字串中字元的所有排列。例 輸入 abc 輸出 abc acb bac cab cba 長度為n的字串的排列若是集合s,其中一種排列的字串為 s2,sn s2 sn 再插入sn 1s sn 1 則有對於乙個字串有n 1個插入位置。因此,解題思路就是每次遞迴加入乙個字元,直到字串全...

劍指 Offer 38 字串的排列

輸入乙個字串,列印出該字串中字元的所有排列。你可以以任意順序返回這個字串陣列,但裡面不能有重複元素。示例 輸入 s abc 輸出 abc acb bac bca cab cba class solution boolean visited new boolean s.length dfs s,vis...

劍指 Offer 38 字串的排列

輸入乙個字串,列印出該字串中字元的所有排列。你可以以任意順序返回這個字串陣列,但裡面不能有重複元素。示例 輸入 s abc 輸出 abc acb bac bca cab cba 限制 1 s 的長度 8 通過次數30,289提交次數55,865 思路 回溯法。這道題應該這樣來理解,對於每乙個位置,在...