有一个List<String> a;现在要求写一个方法,功能如下:
 传入a之后,比如a的内容为“qwe”,“ui”,“fgh”,求出所有第一个字母为qwe中的一个,第二个字母为ui中的一个,第三个字母为fgh中的一个的可能(quf,qug,quh,qif,qig,qih,wuf,wug,wuh,euf,euh,eug,qif,qig,qih.........),类似于全排列,但又比较特殊,请各位大侠附上具体代码,不胜感激~

解决方案 »

  1.   

    只要一个的话
    就在每个字符串中用随机数取一个字符
    最后组合成一个string 可以么
      

  2.   

    不行啊,随机取有可能会重复,而且必须保证组成的字符串第一个字符是List中第一个元素的一个字符,第二个字符是List中第二个元素的一个字符,依次类推
      

  3.   


    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    List list = new ArrayList();
    list.add("qwe");
    list.add("ui");
    list.add("fgh");
    sort(list);
    }
    private static void sort(List list){
    Object[] str = list.toArray();
    boolean b = true;
    String[] s = null;
    for(int i=0; i<str.length-1;i++){
    if(b){
    s = get(toArr(str[i].toString()),toArr(str[i+1].toString()));
    b = false;
    }else{
    s = get(s,toArr(str[i+1].toString()));
    }
    }
    Arrays.sort(s);
    System.out.println(Arrays.asList(s));
    }
    /**
     * 每两个结合,与下个数组继续
     * @param s1
     * @param s2
     * @return
     */
    private static String[] get(String[] s1 , String[] s2){
    String[] arr = new String[s1.length*s2.length];
    int len = 0;
    for(int i=0;i<s1.length;i++){
    for(int j=0;j<s2.length;j++){
    arr[len++] = s1[i]+s2[j];
    }
    }
    return arr;
    }
    /**
     * 转换数组
     * @param s
     * @return
     */
    private static String[] toArr(String s){
    String[] res = new String[s.length()];
    String[] arr = s.split("");
    int len = 0;
    for(int j=0;j<arr.length;j++){
    if(!"".equals(arr[j])){
    res[len++] = arr[j];

    }
    return res;
    }
    我用的jdk是1.4的,没有泛型!
      

  4.   

    我也写了一下,不知道对不对,可以试试public class test implements javatest{ /**s
     * @param args
     */
    public static void main(String[] args) {
    List<String> a=new ArrayList<String>();
    a.add("abc");
    a.add("def");
    a.add("ghi");
    sort("",-1,a);

    }

    public static void sort(String s,int index,List<String> a){
    index++;
    for(int i=0;i<a.get(index).length();i++){
    if(index+1==a.size()){
    System.out.println(s+a.get(index).charAt(i));
    }
    else{
    sort(s+a.get(index).charAt(i),index,a);
    }
    } }}