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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 止询初衷 中级黑马   /  2014-8-4 22:23  /  1117 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

* 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,
* 例如:原始字符串是"abc",打印得到下列所有组合情况:
* "a" "b" "c"
* "ab" "bc" "ca" "ba" "cb" "ac"
* "abc" "acb" "bac" "bca" "cab" "cba


3 个回复

倒序浏览

思路很简单,就是循环打印各位元素

  1. class  Test001
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String s = "abc";
  6.                 char[] arr = s.toCharArray();
  7.                 one(arr);
  8.                 two(arr);
  9.                 three(arr);
  10.         }

  11.         public static void one(char[] arr)
  12.         {
  13.                 for(int i=0;i<arr.length;i++)
  14.                 {
  15.                         System.out.print("\""+arr[i]+"\"");
  16.                 }
  17.                 System.out.println();
  18.         }

  19.         public static void two(char[] arr)
  20.         {
  21.                 for(int i=0;i<arr.length;i++)
  22.                 {
  23.                         for(int j=0;j<arr.length;j++)
  24.                         {
  25.                                 if(i!=j)
  26.                                         System.out.print("\""+arr[i]+arr[j]+"\"");
  27.                         }
  28.                 }
  29.                 System.out.println();
  30.         }

  31.         public static void three(char[] arr)
  32.         {
  33.                 for(int i=0;i<arr.length;i++)
  34.                 {
  35.                         for(int j=0;j<arr.length;j++)
  36.                         {
  37.                                 for(int k=0;k<arr.length;k++)
  38.                                 {
  39.                                         if(i!=j && i!=k && j!=k)
  40.                                                 System.out.print("\""+arr[i]+arr[j]+arr[k]+"\"");
  41.                                 }
  42.                         }
  43.                 }
  44.                 System.out.println();
  45.         }

  46. }

复制代码

回复 使用道具 举报
貌似不是第一次提出这种问题了,你要小心了

可以用递归解决

HashSet set = new HashSet();// Set的作用是不会存储重复的对象

void main(){
    String msg = "abc";
    int len = msg.length();
    int flen = len *len -len;    // n*(n-1)
    for(int i=0;i<flen;i++){
          /// 拼装字符串,自己来搞定
   }

}

public void split(String msg){
     set.put(msg);
     if(msg.length()>1){
            split(msg.subString(1));
     }

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