接收屏幕输入一个字符窜,将该字符串的不同序列的字符串打印出来 

解决方案 »

  1.   

    你关键字选的不对,我一搜就搜到了,你都想了这么久了,应该知道怎么从控制台读取吧。
    http://blog.csdn.net/yuanqingfei/archive/2008/02/01/2076584.aspx
    import java.util.ArrayList;
    import java.util.Arrays;public class Test {
    public static void main(String[] args) {
    System.out.println(Arrays.toString(permutation("1234")));
    } private static String[] permutation(String orginal) {
    ArrayList<String> list = new ArrayList<String>();
    if (orginal.length() == 1) {
    return new String[] { orginal };
    } else {
    for (int i = 0; i < orginal.length(); i++) {
    String s = orginal.charAt(i) + "";
    String result = "";
    String resultA = result + s;
    String leftS = orginal.substring(0, i)
    + orginal.substring(i + 1, orginal.length());
    for (String element : permutation(leftS)) {
    result = resultA + element;
    list.add(result);
    }
    }
    return (String[]) list.toArray(new String[list.size()]);
    }
    }
    }
      

  2.   

    递归的不是太好理解,你可以搜个非递归的
    关键字,全排列 java
      

  3.   

    private static String[] permutation(String orginal) {
    ArrayList<String> list = new ArrayList<String>();
    if (orginal.length() == 1) {
    return new String[] { orginal };
    } else {
    for (int i = 0; i < orginal.length(); i++) {
    System.out.println("*"+orginal);
    String s = orginal.charAt(i) + "";
    System.out.println("***"+s);
    String result = "";
    String resultA = result + s;
    String leftS = orginal.substring(0, i)
    + orginal.substring(i + 1, orginal.length());
    System.out.println("******"+leftS);
    for (String element : permutation(leftS)) {
    result = resultA + element;
    list.add(result);
    }
    }
    return (String[]) list.toArray(new String[list.size()]);
    }
    }
    加了用于理解的输出
      

  4.   

    呵呵,来晚了,老sun天天这么晚睡啊!
      

  5.   

    public class AllSort{ 
        public static void main(String[] args) { 
            char buf[]={'a','b','c'};         perm(buf,0,buf.length-1); 
        } 
        public static void perm(char[] buf,int start,int end){ 
            if(start==end){//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可 
                for(int i=0;i<=end;i++){ 
                    System.out.print(buf[i]); 
                } 
                System.out.println();    
            } 
            else{//多个字母全排列 
                for(int i=start;i<=end;i++){ 
                    char temp=buf[start];//交换数组第一个元素与后续的元素 
                    buf[start]=buf[i]; 
                    buf[i]=temp; 
                    printArray(buf); 
                     
                    perm(buf,start+1,end);//后续元素递归全排列 
                     
                    temp=buf[start];//将交换后的数组还原 
                    buf[start]=buf[i]; 
                    buf[i]=temp; 
                    printArray(buf); 
                } 
            } 
        } 
        public static void printArray (char[] charArray){ 
            System.out.print("Now the array includes: "); 
            for (int i=0; i<charArray.length; i++){ 
                System.out.print(charArray[i]); 
            } 
            System.out.println(""); 
        } 
    }
      

  6.   

    http://blog.csdn.net/No_End_Point/archive/2008/08/22/2814914.aspx旋转法来实现全排列
      

  7.   

    http://blog.csdn.net/No_End_Point/archive/2008/08/22/2814914.aspx
      

  8.   

    遞歸思路,將字符串的第一個和第二個換,然後求除第一個外的字符串的全排列...so on..
    10000!...要命啊...
      

  9.   

    关键是递归,google上应该有好多的。。
    来晚了~!
      

  10.   

    就是字符串里所有字符的全排列。比如:字符串ab的全排列:
    ab,bc
    n个字符有n!个全排列。
      

  11.   

    路过,学习,我个人觉得有两点需要考虑:
    1,  对字符的合法检测:输入是否合法,包括输入的位数,以及临界状态比如栈溢出,...
    2.  用递归还是用循环,本人对JAVA不熟悉,所以高手们看看怎么解决好了!
      

  12.   

    放在数组,然后加个中间变量,接着进行比较,不过稍微麻烦. 可以尝试使用hashmap, 然后按键值来排列,
      

  13.   

    我也来 贴一个public class QuanPaiLei { public static int MAX = 4; public static boolean state[] = new boolean[MAX + 1]; public static int item[] = new int[MAX + 1]; public static String element[] = { "a", "b", "c","d" }; public static void main(String[] args) {
    DoPermutation(1);
    } public static void DoPermutation(int pos) {
    if (pos > MAX) {
    for (int j = 1; j <= MAX; j++)
    System.out.print(element[item[j] - 1]);
    System.out.println();
    return;
    }
    for (int i = 1; i <= MAX; i++) {
    if (!state[i]) {
    state[i] = true;
    item[pos] = i;
    DoPermutation(pos + 1);
    state[i] = false;
    }
    }
    }
    }