题解 | 字符串的排列
字符串的排列
https://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return string字符串ArrayList
*/
ArrayList<String> ans = new ArrayList<>();
StringBuffer path = new StringBuffer();
boolean[] used;
public ArrayList<String> Permutation (String str) {
// write code here
if(str.length() < 2){
ans.add(str);
return ans;
}
used = new boolean[str.length()];
back_tracking(str);
return ans;
}
public void back_tracking(String str){
if(path.length() == str.length()){
ans.add(path.toString());
}
ArrayList<Character> chosed = new ArrayList<>();
for(int i = 0; i < str.length(); i++){
if(!used[i] && (chosed.isEmpty() || !chosed.contains(str.charAt(i)))){
chosed.add(str.charAt(i));
used[i] = true;
path.append(str.charAt(i));
back_tracking(str);
path.deleteCharAt(path.length() - 1);
used[i] = false;
}
}
}
}
用一个list保存已经出现过的字符。


安克创新 Anker公司福利 574人发布