zoukankan      html  css  js  c++  java
  • 牛客(27)字符串的排列

    //    题目描述
    //    输入一个字符串,按字典序打印出该字符串中字符的所有排列。
    //    例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
    
        //    输入描述:
    //    输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
        public static ArrayList<String> Permutation(String str) {
            ArrayList<String> arrayList = new ArrayList<String>();
            char[] chars = str.toCharArray();
            Permutation(chars, 0, arrayList);
    //      按字典序打印
            TreeSet<String> strings = new TreeSet<String>(arrayList);
            arrayList.clear();
            arrayList.addAll(strings);
            return arrayList;
        }
    
        public static void Permutation(char[] chars, int start, ArrayList<String> arrayList) {
            //结束条件
            if (start > chars.length - 1 || chars == null) {
                return;
            }
    
            if (start == chars.length - 1) {
                arrayList.add(String.valueOf(chars));
            } else {
    
                for (int i = start ; i < chars.length; i++) {
                    if (i==start){
                        //start 是第一个
                        Permutation(chars, start + 1, arrayList);
                    }else{
                        //start 不是第一个
                        //交换
                        swap(chars, start, i);
    
                        Permutation(chars, start + 1, arrayList);
    
                        //恢复
                        swap(chars, start, i);
                    }
                }
            }
        }
    
        public static void swap(char[] chars, int start, int end) {
            char temp = chars[start];
            chars[start] = chars[end];
            chars[end] = temp;
        }
  • 相关阅读:
    不用+做加法
    实用类型转换
    Failed to retrieve application JMX service URL
    0.辗转相除法
    1. 数组与字符串
    Java数据结构之257二叉树的所有路径
    Java数据结构与算法之DFS
    Java数据结构与算法之图
    Java数据结构与算法之快速排序、归并排序
    Java数据结构与算法之冒泡排序、选择排序
  • 原文地址:https://www.cnblogs.com/kaibing/p/9024883.html
Copyright © 2011-2022 走看看