package common;
import java.util.ArrayList;
import java.util.Arrays;
/**
* @author : zhaoliang
* @program :newCoder
* @description : 字符串的排列
* @create : 2020/11/28 16:40
*/
public class Permutation {
private ArrayList<String> res = new ArrayList<>();
public ArrayList<String> Permutation(String str){
if (str.length()==0)return res;
char[] chars = str.toCharArray();
Arrays.sort(chars);
backtracking(chars,new boolean[chars.length],new StringBuilder());
return res;
}
private void backtracking(char[] chars, boolean[] isHasUsed, StringBuilder s) {
if (s.length() == chars.length){
res.add(s.toString());
return;
}
for (int i = 0; i <chars.length ; i++) {
if (isHasUsed[i]){
continue;
}
if (i!=0 && chars[i]==chars[i-1] && !isHasUsed[i-1]){/*保证不重复*/
continue;
}
isHasUsed[i] = true;
s.append(chars[i]);
backtracking(chars,isHasUsed,s);
s.deleteCharAt(s.length()-1);
isHasUsed[i] = false;
}
}
}
常见算法-字符串的排列
最新推荐文章于 2024-09-18 20:33:32 发布