无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。
示例1:
输入:S = "qwe"
输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]
示例2:
输入:S = "ab"
输出:["ab", "ba"]
提示:
字符都是英文字母。
字符串长度在[1, 9]之间。
class Solution {
public String[] permutation(String S) {
if(S.length() ==1) return new String[]{S};
List<String> list = new ArrayList<>();
int length = S.length();
help(S.toCharArray(),0,list,length);
return (String[]) list.toArray(new String[0]);
}
private void help(char[] str , int index ,List<String> list , int length){
if(index == length-1) {
list.add(String.valueOf(str));
return ;
}
for(int i = index ;i<length ;i++){
swap(str, index,i );
help(str,index+1,list,length);
swap(str, index,i );
}
}
private void swap(char[] str , int i , int j){
if(i == j) return ;
char ch = str[i];
str[i] = str[j];
str[j] = ch;
}
}