递归:也就是将当前所有的字符串都拿到所有位置排一遍
1. 将所有字符拿到第一位,去除该字符,剩余字符串调用该方法;
2. 将剩余字符返回的排列与当前字符进行拼接;
3. 去重:有重复字符所以要进行去重
public ArrayList<String> Permutation(String str){ ArrayList<String> result = new ArrayList<>(); if(str.length() == 1){ result.add(str); return result; } for (int i = 0; i < str.length(); i++) { //将当前字符排第一位 //字符串中删除该字符调用递归 ArrayList<String> strings = Permutation( new StringBuilder(str).deleteCharAt(i).toString()); for (String string : strings) { String re = str.charAt(i) +string; result.add(re); } } //去重 ArrayList<String> strings = new ArrayList<>(result.size()); for (int i = 0; i < result.size(); i++) { if(!strings.contains(result.get(i))){ strings.add(result.get(i)); } } return strings; }