/**
* 字符串的排列
* 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
* 全排列
*
* @param str
* @return
*/
public ArrayList<String> Permutation(String str) {
TreeSet<String> set = new TreeSet<>();
ArrayList<String> list = new ArrayList<>();
if (str.length() == 0) return list;
PermutationHelp(new boolean[str.length()], "", str.toCharArray(), set);
for (String s : set) list.add(s);
return list;
}
void PermutationHelp(boolean[] visited, String str, char[] chars, TreeSet<String> set) {
if (str.length() == chars.length) {
set.add(str);
}
for (int i = 0; i < chars.length; i++) {
if (!visited[i]) {
visited[i] = true;
PermutationHelp(visited, str + chars[i], chars, set);
visited[i] = false;
}
}
}
字符串的排列
最新推荐文章于 2023-09-20 10:40:24 发布