劍指offer系列 38 字串的排列

2022-06-01 14:12:09 字數 532 閱讀 8540

nowcoder

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串 abc,則列印出由字元 a, b, c 所能排列出來的所有字串 abc, acb, bac, bca, cab 和 cba。

我們求整個字串的排列,可以看成兩步:首先求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。首先固定第乙個字元,求後面所有字元的排列。這個時候我們仍把後面的所有字元分為兩部分:後面的字元的第乙個字元,以及這個字元之後的所有字元。然後把第乙個字元逐一和它後面的字元交換。

private arraylistret = new arraylist<>();

public arraylistpermutation(string str)

private

void backtracking(char chars, boolean

hasused, stringbuilder s)

for (int i = 0; i < chars.length; i++)

}

劍指Offer 38 字串的排列

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

劍指Offer 題38(字串的排列)

輸入乙個字串,列印出該字串中字元的所有排列。輸入 abc 輸出 abc acb bac bca cab cba。step1 求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有字元進行交換。step2 每次都把乙個數固定在前面,讓後面的數遞迴地進行全排列,這樣每個數都固定過以後就能找出所有排列...

劍指 Offer 38 字串的排列

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