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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//编程输出一个字符串的全字符组合情况,原始字符串中没有重复字符,
/*例如:
原始字符串是"abc",打印得到下列所有组合情况
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"*/ //[abc, acb, bac, bca, cab, cba]
/**
* 分析:将abc转换成为字符数组;
* 2,让数组中的每一个元素进行组合
* 3,可以使用for嵌套循环试一下
*
*
* */

import java.util.ArrayList;
import java.util.List;

public class Test11 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                String s = "abc";
                char[] ch = s.toCharArray();
                for (int i = 0; i < ch.length; i++) {
                        System.out.print(String.valueOf(ch[i]) + " ");
                }
                System.out.println();
                ArrayList<String> list = new ArrayList<>();
                for (int i = 0; i < ch.length; i++) {
                        // list.add(String.valueOf(ch[i])); //将abc添加到集合当中
                        for (int j = 0; j < ch.length; j++) {
                                // 将两个字符直接输出
                                if (!String.valueOf(ch[i]).equals(String.valueOf(ch[j]))) {
                                        System.out.print(String.valueOf(ch[i]) + String.valueOf(ch[j]) + " ");
                                        // 将三个字符存入
                                        for (int k = 0; k < ch.length; k++) {
                                                list.add(String.valueOf(ch[i]) + String.valueOf(ch[j]) + String.valueOf(ch[k]));

                                        }
                                }

                        }
                        //
                }
                // 判断list中的每一个元素,看有没有重复的
                System.out.println();
                // System.out.println(list.size());

                // 将集合中的元素存入字符数组中
                String[] st = new String[list.size()];
                for (int i = 0; i < list.size(); i++) {
                        st[i] = list.get(i);
                }
                // 遍历String[]数组
                /*
                 * for (int i = 0; i < st.length; i++) { System.out.print(st[i]+" "); }
                 */

                // 判断字符数组中的每一个元素是否有重复字符,如果有没有重复就添加到新集合中
                List<String> newlist = new ArrayList<>();
                for (int k = 0; k < st.length; k++) {
                        // 判断条件,第一个字符不等于第二个字符并且第一个字符不等第3个字符并且第二个字符不等于第3个字符
                        if ((st[k].charAt(0) != st[k].charAt(1) && st[k].charAt(0) != st[k].charAt(2))
                                        && st[k].charAt(1) != st[k].charAt(2)) {
                                newlist.add(st[k]);
                        }

                }
                // 遍历新集合
                for (int i = 0; i < newlist.size(); i++) {
                        System.out.print(newlist.get(i) + " ");

                }

        }
}

2 个回复

倒序浏览
可以 ,思路挺清晰
回复 使用道具 举报
import java.util.Arrays;

public class Test1 {

        public static void main(String[] args) {
                char[] input = "ABC".toCharArray();
                for (int i = 0; i < input.length; i++) {
                        for (char c : input) {
                                count=0;
                                f(input, new char[]{c}, i);
                        }
                }
        }
        static int count=0;
        public static void f(char[] cs,char[]arr,int n){
                if(n==count){
                        System.out.println(String.valueOf(arr));
                        return;
                }
                for (char c : cs) {
                        if(checkRepeat(c, arr)){
                                count++;
                                arr=Arrays.copyOf(arr, arr.length+1);
                                arr[arr.length-1]=c;
                                f(cs, arr, n);
                                count--;
                                arr=Arrays.copyOf(arr, arr.length-1);
                        }else {
                                continue;
                        }
                       
                }
        }
       
        public static boolean checkRepeat(char input,char[] arr){
                for (int i = 0; i < arr.length; i++) {
                        if(input==arr[i]){
                                return false;
                        }
                }
                return true;
        }
}

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

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