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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.itheima;

import java.util.Scanner;

/*
* @author xujie
* @version 1.0.1
*  问题:
*     编程列出一个字符串组合情况,原始字符串中没有重复字符,
*     例如:原始字符串是"abc"
*     打印得到下列所有组合情况:
*     "a" "b" "c"
*     "ab" "bc" "ca" "ba" "cb" "ac"
*     "abc" "acb" "bac" "bca" "cab" "cba"
*     
*/
public class Test5 {

        private static int count=0;
        public static void main(String[] args) {
                Test5 ts=new Test5();
                //输入一个字符串
                Scanner s=new Scanner(System.in);
                String w=s.nextLine();
                ts.out("",w);
        }
       
        /**
         *
         * @param begin 字符串的前部分,不需要修改
         * @param end   字符串的后半部分,
         *                      如果end长度为1,则begin+end
         *                      如果不为1:再次分割,得到1再进行拼接
         */
        private void out(String begin, String end) {
                /**
                 * 这种情况就是    ab+c类似
                 * 所以这里输出都是  同输入字符串一样长度的字符串
                 */
                if(end.length()==1){
                        System.out.println(begin+end);
                        return;
                }
               
                for(int i=0;i<end.length();i++){
                        StringBuilder s=new StringBuilder(end);
                        String str=begin+end.substring(i, i+1);
                    System.out.println(str);
                       
                    //将该字符删除
                        out(str,s.deleteCharAt(i).toString());
                }
        }
}

评分

参与人数 3黑马币 +59 收起 理由
shero + 20 赞一个!
leon541 + 19 赞一个!
潘小珠 + 20 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马