美文网首页
牛客网-递归的使用:输入一个字符串,按字典序打印出该字符串中字符

牛客网-递归的使用:输入一个字符串,按字典序打印出该字符串中字符

作者: 雨夜微凉886 | 来源:发表于2020-03-06 11:33 被阅读0次
    
    public class Main {
        public ArrayList<String> permutation(String str) {
            ArrayList<String> list = new ArrayList<>();
            if (str == null || str.length() == 0) {
                return list;
            }
            collect(str.toCharArray(), 0, list);
            Collections.sort(list);
            return list;
        }
    
        public static void collect(char[] chars, int begin, ArrayList<String> list) {
            if (begin == chars.length - 1) {
                // 不能存入相同的排列
                String s = String.valueOf(chars);
                if (!list.contains(s)) {
                    list.add(s);
                    return;
                }
            }
    
            for (int i = begin; i < chars.length; i++) {//大的循环,需要控制第一个逐个和后面的交换
                swap(chars, i, begin);
                collect(chars, begin + 1, list);
                swap(chars, i, begin);
            }
    
        }
    
        public static void swap(char[] chars, int i, int j) {
            char temp = chars[j];
            chars[j] = chars[i];
            chars[i] = temp;
        }
    
        public static void main(String[] args) {
            Main a = new Main();
            System.out.println(a.permutation("abc"));
        }
    }
    

    相关文章

      网友评论

          本文标题:牛客网-递归的使用:输入一个字符串,按字典序打印出该字符串中字符

          本文链接:https://www.haomeiwen.com/subject/kczvrhtx.html