A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

就是如果是abc 就有abc abc bac bca cab cba6 这个忘了叫什么。感觉固定下来不太安逸,就写了一个字符串的排列
搞了许久才实现了效果,不知道行不得行,大神们给给意见
[mw_shl_code=java,true]public static void main(String[] args) {

                getStringPaiLie("qwer");

        }

        public static void getStringPaiLie(String s) {
                // 需要判断字符串内的元素是否唯一  
                char chs[] = s.toCharArray();

                if (checkArrayRepeat(chs)) {
                        System.out.println("字符串元素不唯一");
                        return;
                }

                int len = chs.length;
                tempChars = new char[len];
                xunhuan(chs, 0);
                System.out.println(slist.size());
                System.out.println(slist);
        }
        /**
         * 添加队列字符串到数组
         * @param chs
         * @param index 数组索引
         *
         */
        public static void xunhuan(char chs[], int index) {
                for (int i = 0; i < chs.length; i++) {
                        //每进入一重循环,记录到静态数组中。也可以传个数组过来  第一个循环体就是tempChar(0)
                        tempChars[index] = chs;
                        //如果没到最里面的循环,就递归下去,记录每一层的值 tempChar(i) 递归时索引+1,tempChar(1)=第二重循环的i值
                        if (index != chs.length - 1) {
                                xunhuan(chs, index + 1);
                        }
                        //递归到最里面的循坏,开始写代码  如果tempChar里面有重复的,就什么都不干继续循环
                        if (index == chs.length - 1) {
                                if (checkArrayRepeat(tempChars))
                                        continue;
                                //如果数组无重复值,就把他变成字符串存起来
                                slist.add(new String(tempChars));
                        }
                }

        }
        /**
         * 简单的判断字符数组里有无重复元素
         * @param c
         * @return 有重复 true 无重复 false
         */
        private static boolean checkArrayRepeat(char[] c) {
                for (int i = 0; i < c.length; i++) {
                        for (int j = i + 1; j < c.length; j++) {
                                if (c == c[j]) {
                                        return true;
                                }
                        }
                }
                return false;
        }[/mw_shl_code]

1 个回复

倒序浏览
还有2个静态属性
        static ArrayList<String> slist = new ArrayList<String>();
        static char tempChars[] = null;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马