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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 时光♪微凉 于 2014-5-6 19:27 编辑

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

3 个回复

正序浏览
  1. public class Test
  2. {
  3.        
  4.        
  5.         public static void main(String args[])
  6.         {
  7.                 String str = "abc";
  8.                 char[] a = str.toCharArray();
  9.                 sort(a, 0);
  10.                 System.out.println("---------------------");
  11.                 for(int i=0; i<str.length(); i++)
  12.                 {
  13.                        
  14.                         a = subString(str, i).toCharArray();
  15.                        
  16.                         sort(a, 0);
  17.                        
  18.                         System.out.println("--------------------");
  19.                 }
  20.         }
  21.        
  22.         //删除一个字符串中的第i个字母  返回一个新的字符串
  23.         static String subString(String str, int i)
  24.         {
  25.                 if(i>0)
  26.                 {
  27.                         str = str.substring(0, i) + str.substring(++i, str.length());
  28.                         return str;
  29.                 }
  30.                 else
  31.                         return str.substring(++i, str.length());
  32.         }


  33.         static void sort(char[] str,int index)
  34.         {
  35.                 int i;
  36.                 if (index == str.length)
  37.                 {
  38.                         for (i = 0; i < str.length; i++)
  39.                         {
  40.                                 System.out.print(str[i]);
  41.                         }
  42.                         System.out.println("");
  43.                         return;
  44.                 }
  45.                 for (i = index; i < str.length; i++)
  46.                 {
  47.                         //交换字符
  48.                         char temp;
  49.                         temp = str[index];
  50.                         str[index] = str[i];
  51.                         str[i] = temp;
  52.                        
  53.                         sort(str, index + 1);
  54.                        
  55.                         temp = str[index];
  56.                         str[index] = str[i];
  57.                         str[i] = temp;
  58.                 }
  59.         }
  60. }
复制代码
回复 使用道具 举报
利用全排列算法试试!
回复 使用道具 举报
路过的大神们,解救啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马