字符串全排列

来源:互联网 发布:mac android 真机调试 编辑:程序博客网 时间:2024/06/18 00:13
依次选出每一个字符元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。以对字符串abc进行全排列为例,我们可以这么做: 
固定a,求后面bc的排列:abc,acb,求好后,a和b交换,得到bac 
固定b,求后面ac的排列:bac,bca,求好后,c放到第一位置,得到cba 
固定c,求后面ba的排列:cba,cab。
public class Test {        private static StringBuilder result = new StringBuilder();        public static void main(String[] args) {          perm("abc".toCharArray(), 0);        System.out.println(result.toString());    }                public static void perm(char[] in, int start) {          if (start == in.length - 1) {              result.append(in);            result.append("\n");        }         else {             for (int i = start; i < in.length; i++) {                 moveToHead(in, start, i);                     perm(in, start + 1);                 moveToHead(in, start, i);              }          }      }        public static void moveToHead(char[] in, int first, int second) {          char temp = in[first];          in[first] = in[second];          in[second] = temp;      }}

原创粉丝点击