黑马程序员技术交流社区

标题: 一道面试题 [打印本页]

作者: 八戒    时间: 2015-7-9 20:21
标题: 一道面试题
编程并打印出字符串的所有组合形式
以"abc"为例
"a""b""c"
"ab""ac""bc""cb""ca""ba"
"abc""acb""bca""bac""cab""cba"
这道题怎么做?求大神指点迷津.......
作者: tsiov    时间: 2015-7-9 20:24
用三重For循环即可。
作者: 任文龙    时间: 2015-7-9 20:25
是给定字符还是给定字符串?
作者: liaohaojin    时间: 2015-7-9 20:39
刚学循环,慢慢想下。。。
作者: wx_HWRW5aF7    时间: 2015-7-9 21:01
假设有n哥字母参与排序,第一排有n个字符 第二排有C(2,3)*A(2,2) 个字符串  第三排有A(3,3)个字符串,
作者: 钟志军zzj    时间: 2015-7-9 21:14
三重for就可以
作者: 为明天而奋斗    时间: 2015-7-9 21:14
不太清楚哦
作者: WElife    时间: 2015-7-9 21:43
给你一种答案。。。
  1. public class Sort{
  2.         public void permutation(char[] buf, int start, int end) {  
  3.         if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可  
  4.             for (int i = 0; i <= end; i++) {  
  5.                 System.out.print(buf[i]);  
  6.             }  
  7.             System.out.println();  
  8.         } else {// 多个字母全排列  
  9.             for (int i = start; i <= end; i++) {  
  10.                 char temp = buf[start];// 交换数组第一个元素与后续的元素  
  11.                 buf[start] = buf[i];  
  12.                 buf[i] = temp;  
  13.   
  14.                 permutation(buf, start + 1, end);// 后续元素递归全排列  
  15.   
  16.                 temp = buf[start];// 将交换后的数组还原  
  17.                 buf[start] = buf[i];  
  18.                 buf[i] = temp;  
  19.             }  
  20.         }  
  21.     }  

  22.     public void testPermutation() throws Exception {  
  23.         char[] buf = new char[] { 'a', 'b', 'c' };  
  24.         permutation(buf, 0, 2);  
  25.     }  
  26. }  
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2