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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© awkflf11 中级黑马   /  2014-5-4 17:50  /  1193 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文





编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,

例如:原始字符串是"abc",

打印得到下列所有组合情况:

"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"

5 个回复

倒序浏览
在做基础题吧?这一题我也没搞出来,不过大致思路应该是先求组合,然后对于每一种组合求出该组合所对应的全排列。怎么求组合、排列之类的问题网上有很多
回复 使用道具 举报
:L 怎么感觉基础里没遇到过这题
回复 使用道具 举报
  1. 在andorid论坛已经为你解答了,复制一遍。

  2. public class test

  3. {

  4.         public static void main(String[] args)

  5.         {

  6.                 perm("abc".toCharArray(), 0);

  7.         }

  8.         

  9.         public static void perm(char[] chs,int k)

  10.         {

  11.                 if(k == chs.length)

  12.                 {

  13.                         for(int i=0; i<chs.length; i++)

  14.                         {

  15.                                 System.out.print(chs[i]);

  16.                         }

  17.                         System.out.print("  ");

  18.                         

  19.                 }

  20.                 else

  21.                 {

  22.                         for(int i=k; i<chs.length; i++)

  23.                         {

  24.                                 swap(chs, i, k);

  25.                                 perm(chs, k+1);

  26.                                 swap(chs, i, k);

  27.                         }

  28.                 }

  29.                

  30.         }

  31.         

  32.         public static void swap(char[] chs,int i,int j)

  33.         {

  34.                 char tem = chs[i];

  35.                 chs[i] = chs[j];

  36.                 chs[j] = tem;

  37.         }

  38.         

  39.         



  40. }
复制代码
回复 使用道具 举报
  1. 是这一份!!!
  2. 这下应该完整了。

  3. public class test

  4. {

  5.         public static void main(String[] args)

  6.         {

  7.                 showPermString("abcd");

  8.         }

  9.         

  10.         

  11.         

  12.         public static void showPermString(String str)

  13.         {

  14.                 for(int i=1; i<=str.length(); i++)

  15.                 {

  16.                         List<String> list = new ArrayList<String>();

  17.                         perm(list, str.toCharArray(), 0, i);

  18.                         System.out.println(list);

  19.                 }

  20.         }



  21.         

  22.         

  23.         

  24.         public static void perm(List<String> list,char[] chs,int k,int len)

  25.         {

  26.                 if(k == chs.length)

  27.                 {

  28.                         String string = String.valueOf(chs, 0, len);

  29.                         if(!list.contains(string))

  30.                                 list.add(string);

  31.                 }

  32.                 else

  33.                 {

  34.                         for(int i=k; i<chs.length; i++)

  35.                         {

  36.                                 swap(chs, i, k);

  37.                                 perm(list,chs, k+1,len);

  38.                                 swap(chs, i, k);

  39.                         }

  40.                 }

  41.                

  42.         }

  43.         

  44.         public static void swap(char[] chs,int i,int j)

  45.         {

  46.                 char tem = chs[i];

  47.                 chs[i] = chs[j];

  48.                 chs[j] = tem;

  49.         }



  50. }


复制代码

点评

多谢,,帮助  发表于 2014-5-5 20:46
回复 使用道具 举报 2 0
您需要登录后才可以回帖 登录 | 加入黑马