递归:也就是将当前所有的字符串都拿到所有位置排一遍
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;
    }