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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

lilin202011 来自手机 中级黑马 2014-6-21 22:56:32
421#
抢楼喽快枪啊
回复 使用道具 举报

回帖奖励 +1

滔哥,就给一个币啊
回复 使用道具 举报

回帖奖励 +1

回帖了,涛哥
回复 使用道具 举报

回帖奖励 +1

太好了,祝黑马越办越好
回复 使用道具 举报
LZ 我要金币 我要
回复 使用道具 举报
come here heimacoin。。。。。。。。。。。。。。。。
回复 使用道具 举报
加油 加油  
回复 使用道具 举报
哈哈 庆祝 庆祝
回复 使用道具 举报

回帖奖励 +1

紧缺黑马币啊
回复 使用道具 举报

回帖奖励 +1

还能赶上吗!:victory::lol:victory:
回复 使用道具 举报
顶一个。。。。。。
回复 使用道具 举报

回帖奖励 +1

来回复了
回复 使用道具 举报
恭喜恭喜 加油进入黑马
回复 使用道具 举报
进黑马的程序着实有点麻烦
回复 使用道具 举报
进来看看
回复 使用道具 举报
用的是递归


import java.util.Scanner;
import java.util.TreeSet;

public class Test07 {
        public static void main(String[] args) {
                // 定义一个键盘输入
                System.out.println("输入一个字符串:");
                Scanner sc = new Scanner(System.in);

                String string = sc.next();
                System.out.println(string);

                sc.close();
                show(string);
        }

        // 打印字符串的所有可能的组合
        private static void show(String str) {
                TreeSet<String> set = saveInSet(new StringBuilder(str), 0,
                                new StringBuilder(), new TreeSet<String>());
                for (String s : set) {
                        System.out.println(s);
                }
        }

        /**
         * 返回集合,集合包含字符串所有字符的可能组合
         *
         * @param str
         *            给定字符串转换成的StringBuilder对象,主要是为了操作字符方便
         * @param count
         *            计数,对第count进行排列组合
         * @param buff
         *            暂存放某种可能
         * @param set
         *            集合,去除重复元素,例如"aab"以第一个a开头会有aba,以第二个a开头也会有aba
         * @return 返回TreeSet集合
         */
        private static TreeSet<String> saveInSet(StringBuilder str, int count,
                        StringBuilder buff, TreeSet<String> set) {
                for (int x = 0, len = str.length(); x < len; x++) {
                        // 获取字符
                        char ch = str.charAt(x);
                        // 去掉原字符串的某个字符(保证某个字符不被重复利用)
                        str.deleteCharAt(x);
                        // 缓存添加该字符
                        buff.append(ch);
                        // 将该种可能组合存入集合
                        set.add(buff.toString());
                        // str仍包含字符,则递归调用,开始取第二位字符
                        // 若还有第三位则继续递归……以此类推
                        if (str.length() != 0) {
                                // count用于记录目前在进行排列组合的第count位
                                count++;
                                // 递归
                                saveInSet(str, count, buff, set);
                                // 第n位递归结束后,需要继续对n-1位排列,位数-1
                                count--;
                        }

                        // 递归结束后,需要继续对n-1位排列,因此清除第n位的记录
                        buff.deleteCharAt(count);
                        // 删除的字符插回str
                        str.insert(x, ch);
                }
                // 返回集合
                return set;

        }

}
回复 使用道具 举报
来拿了黑马币旧走了
回复 使用道具 举报

回帖奖励 +1

不到500吧

回复 使用道具 举报
抢抢抢抢抢抢抢抢抢抢抢抢抢抢抢抢抢
回复 使用道具 举报

回帖奖励 +1

恭喜恭喜啦。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马