文字列の配置--ディクショナリ・シーケンスの生成、遡及
タイトル:文字列を入力し、辞書順にその文字列のすべての配列を印刷します.例えば文字列abcを入力すると、文字a,b,cで並べられるすべての文字列abc,acb,bac,bca,cab,cbaが印刷される.タイトルリンク
ACコード:
ACコード:
import java.util.ArrayList;
import java.util.TreeSet;
public class Solution {
public ArrayList Permutation(String str) {
ArrayList res = new ArrayList<>();
if (str == null || str.length() == 0)
return res;
TreeSet temp = new TreeSet<>();
fun(str.toCharArray(), 0, temp);
res.addAll(temp);
return res;
}
public void fun(char[] array, int i, TreeSet result) {
if (i == array.length - 1) {//
result.add(new String(array));
} else {// ,
for (int j = i; j < array.length; j++) {
swap(array, i, j);
fun(array, i + 1, result);
swap(array, i, j);
}
}
}
public void swap(char[] array, int i, int j) {
char temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
TreeSet result
ここでは、重複する答えを除去するのではなく、答えを文字順にソートするために使用される.