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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.itheima;

  2. import java.util.ArrayList;
  3. public class Test5 {

  4.         /**
  5.          * 5、 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:

  6.                 原始字符串是"abc",打印得到下列所有组合情况:
  7.                 "a" "b" "c"
  8.                 "ab" "bc" "ca" "ba" "cb" "ac"
  9.                 "abc" "acb" "bac" "bca" "cab" "cba"

  10.          * @param args
  11.          */
  12.         public static void main(String[] args) {
  13.                 String str = "abcd";
  14.                 char[] ch = str.toCharArray();
  15.             ArrayList<Character> al = new ArrayList<Character>();
  16.             subComb(ch, al);
  17.         }
  18.         public static void subComb(char[] ch,ArrayList<Character> al){
  19.                
  20.                 for(int i =0; i<ch.length;i++){
  21.                         if(al.contains(ch[i]))
  22.                                 continue;
  23.                         al.add(al.size(),ch[i]);
  24.                         System.out.println(charALtoString(al));
  25.                         if(al.size()==ch.length){
  26.                                 al.remove(al.size()-1);
  27.                                 break;
  28.                         }
  29.                         subComb(ch, al);
  30.                         al.remove(al.size()-1);
  31.                 }       
  32.                
  33.         }
  34.         private static String charALtoString(ArrayList<Character> al) {
  35.                 // TODO 自动生成的方法存根
  36.                 StringBuffer sb = new StringBuffer();
  37.                 for (int i = 0; i < al.size(); i++) {
  38.                         sb.append(al.get(i));       
  39.                 }
  40.                 return sb.toString();
  41.         }
  42. }
复制代码

2 个回复

倒序浏览
赞一个  继续努力
回复 使用道具 举报
继续努力,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马