老早之前剛學程序的時候碰到了這麼個問題,當時沒想出來,今天忽然想起來了這麼個問題因而寫了下,也算留個記念吧spa
1 public static String itr; 2 3 public static void main(String[] args) { 4 String s = "abcd"; 5 printGroup(s); 6 } 7 8 public static void printGroup(String in){ 9 itr = in; 10 for (int i = 0; i < itr.length() ; i++) { 11 String c = itr.charAt(i)+""; 12 String low = itr.substring(0,i)+itr.substring(i+1); 13 print(c,low); 14 System.out.println(); 15 } 16 } 17 public static String cutStr(String cut){ 18 char[] sa = itr.toCharArray(); 19 char[] ca = cut.toCharArray(); 20 int k = sa.length-ca.length; 21 char[] str = new char[k]; 22 int i = 0; 23 A:for (char s : sa) { 24 for (char c : ca) { 25 if(s==c){ 26 continue A; 27 } 28 } 29 str[i++] = s; 30 if(i==k){ 31 break ; 32 } 33 } 34 return new String(str); 35 } 36 37 private static void print(String c,String str){ 38 for (int i = 0; i < str.length(); i++) { 39 String s = c + str.charAt(i); 40 System.out.print(s+" "); 41 print(s,cutStr(s)); 42 } 43 }
若是輸入爲abcd,結果則爲code
ab abc abcd abd abdc ac acb acbd acd acdb ad adb adbc adc adcb
ba bac bacd bad badc bc bca bcad bcd bcda bd bda bdac bdc bdca
ca cab cabd cad cadb cb cba cbad cbd cbda cd cda cdab cdb cdba
da dab dabc dac dacb db dba dbac dbc dbca dc dca dcab dcb dcba