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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孟小垚 中级黑马   /  2016-7-12 23:45  /  615 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

16 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
                原始字符串是"abc",打印得到下列所有组合情况:
"a" "b" "c"
                "ab" "bc" "ca" "ba" "cb" "ac"
                "abc" "acb" "bac" "bca" "cab" "cba"
求大神来个代码看看像这些类的模版代码是什么样的,谢谢

4 个回复

倒序浏览
初步解决方法:
(1)分析输入的串组合情况(例如,串长为2,3,4等)
(2)通过循环组合各串长(例如:2 , 3 , 4等),然后利用反转函数reverse()生成另一半
(3)举例:
输入串:
“abc”
循环得到串长为2的组合:“ab”、“ac”“bc”,反转后得到串长“ba”“ca” “cb”
或许不是很好的方法,仅是一掠而过的想法
回复 使用道具 举报
ImKing 发表于 2016-7-13 00:15
初步解决方法:
(1)分析输入的串组合情况(例如,串长为2,3,4等)
(2)通过循环组合各串长(例如:2 , ...

可以写一下这个循环组合的代码吗? 就是这块不理解,谢谢
回复 使用道具 举报
  1. public class Combination {
  2.         public static void main(String[] args) {

  3.                 String str = "abc";
  4.                 String[] arrs = new String[3];

  5.                 System.out.println("长度为 1 的字符组合:");
  6.                 for (int m = 0; m < str.length(); m++) {
  7.                         arrs[m] = "" + str.charAt(m);
  8.                         System.out.print(arrs[m] + " ");
  9.                 }
  10.                 System.out.println();
  11.                
  12.                 System.out.println("长度为 2 的字符组合:");
  13.                 for (int i = 0; i < arrs.length; i++) {
  14.                         for (int j = 0; j < arrs.length; j++) {
  15.                                 if (i == j) {
  16.                                         continue;
  17.                                 }
  18.                                 System.out.print(arrs[i] + arrs[j] + " ");
  19.                         }
  20.                 }
  21.                 System.out.println();

  22.                 System.out.println("长度为 3 的字符组合:");
  23.                 for (int i = 0; i < arrs.length; i++) {
  24.                         for (int j = 0; j < arrs.length; j++) {
  25.                                 for (int l = 0; l < arrs.length; l++) {
  26.                                         if (i == j || i == l || j == l) {
  27.                                                 continue;
  28.                                         }
  29.                                         System.out.print(arrs[i] + arrs[j] + arrs[l] + " ");
  30.                                 }
  31.                         }
  32.                 }

  33.         }
  34. }
复制代码


, 呐 花花送你
这种方式还是有点儿片面,不过还是没有较好的办法(暂时)
回复 使用道具 举报
ImKing 发表于 2016-7-13 19:50
, 呐 花花送你
这种方式还是有点儿片面,不过还是没有较好的办法(暂时) ...

明白了,谢谢了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马