题目描述:
有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。
示例1:
输入:S = "qqe"
输出:["eqq","qeq","qqe"]
示例2:
输入:S = "ab"
输出:["ab","ba"]
这道题使用了回溯法,真是令人头大啊!废话不多说,上代码~
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class oeoe {
static String[]finalt;
private Setset=new HashSet<>();
public String[]permutation(String S) {
if (S.length() ==0) return new String[0];
char[] s = S.toCharArray();
boolean[] used =new boolean[s.length];
helper(s, used, "");
String[] ret=new String[set.size()];
finalt =set.toArray(ret);
return finalt;
}
private void helper(char[] s, boolean[] used, String cur) {
if (cur.length() == s.length) {
set.add(cur);
return;
}
for (int i=0;i<s.length;i++){
if (!used[i]){
used[i]=true;
helper(s,used,cur+s[i]);
used[i]=false;
}
}
}
public static void main(String[] args){
String S ="qqe";
oeoe oep =new oeoe();
oep.permutation(S);
System.out.println(Arrays.toString(finalt));
}
}