字符串分解   
  输入:输入一组任意的字符串(如:abc,abc..)   
  输出:所有不同的字串(如:aa,ab,ac,ba,bb,bc..)   
  输出的结果是从左向右结合的,不能出现倒序,即:从各个串取一个进行组合, 
    
  请各位出个思路或代码参考一下。谢谢 

解决方案 »

  1.   

    public class test {
    public static void main(String arg[]){
    if (arg.length<2){
    System.out.println("error");
    System.exit(0);
    }
    StringBuffer sb=new StringBuffer();
    for (int i=0; i<arg.length; i++)
    sb.append(arg[i]);
    for (int i=0; i<arg.length-1; i++){
    String s=arg[i];
    for (int j=0; j<s.length(); j++)
    for (int k=s.length(); k<sb.length(); k++)
    System.out.println(s.charAt(j)+""+sb.charAt(k));
    }
    }
    }
      

  2.   

    好象优点问题的,如果是三个或者更多的参数呢?
    比如说:ab,ab,ab
    输出的结果是:aaa,aab,aba,abb....
    就是说参数不确定的,也许有好多,要每一个字符传都取一个值.上面您给的代码好象只是针对俩个参数的
      

  3.   

    lz的题目有问题,到底是几个,ab可以,abc呢,bca呢
      

  4.   

    也许是我没说清楚,比如说我有一套卷子,有三道试题(举例,题目不确定,比如是三道)这三道试题都有答案:分别为"AB","ABC"
    "AB",我现在是想要这三道试题的答案组合,而且还要有顺序
      

  5.   

    比如说我有一套试卷,(举例,题目不确定,比如是三道),要是有2道题,答案组合分别为:"AB","CD",那么着俩道题的组合:(AC,AD,BC,BD)有三道试题,这三道试题都有答案:分别为"AB","CD" "EF",那么这三道试题的答案组合(ACE,ACF,ADE,ADF,BCE,BCF,BDE,BDF)
    那要是有更多的试题呢?
    我怎么得到所有的答案组合?
      

  6.   

    a[x]=所有题目的答案集合结果集合result={a[x-1].length 可能}*{a[x-2}.length可能}...*{a[x-x].length可能};
      

  7.   


    public static void main(String[] args) throws Exception { boolean isExit = false;
    BufferedReader bReader; bReader = new BufferedReader(new InputStreamReader(System.in)); String str;
    StringTokenizer sTokenizer;
    ArrayList arrayList;
    ArrayList result;
    while (!isExit) {
    str = bReader.readLine();
    if (str.equalsIgnoreCase("exit")) {
    isExit = true;
    continue;
    } sTokenizer = new StringTokenizer(str, ",");
    arrayList = new ArrayList();
    while (sTokenizer.hasMoreTokens()) {
    arrayList.add(sTokenizer.nextToken());
    }
    if (arrayList.size() <= 0) {
    isExit = true;
    continue;
    }
    result = new ArrayList();
    for (int i = 0; i < arrayList.size(); i++) {
    result = getCombination(result, (String) arrayList.get(i));
    } for (int j = 0; j < result.size(); j++)
    System.out.print(result.get(j) + " ");
    System.out.println(); }
    } public static ArrayList getCombination(ArrayList list, String str) {
    ArrayList result = new ArrayList();
    if (list == null || list.size() <= 0) {
    for (int i = 0; i < str.length(); i++) {
    result.add(str.substring(i, i + 1));
    }
    return result;
    }
    /* if (list.size() > str.length())
    throw new IllegalArgumentException("传入参数无效!");*/ for (int i = 0; i < list.size(); i++) {
    for (int j = 0; j < str.length(); j++) {
    result.add(list.get(i) + str.substring(j, j + 1));
    }
    }
    return result;
    }LZ 看行不行  我觉得应该没有问题
      

  8.   

    public class test{
    public static void main(String arg[]){
    if (arg.length<2){
    System.out.println("error");
    System.exit(0);
    }
    StringBuffer sb=new StringBuffer();
    for (int i=0; i<arg.length; i++)
    sb.append(arg[i]);
    int m=0;
    for (int i=0; i<arg.length-1; i++){
    String s=arg[i];
    m+=s.length();
    for (int j=0; j<s.length(); j++)
    for (int k=m; k<sb.length(); k++)
    System.out.println(s.charAt(j)+""+sb.charAt(k));
    }
    }
    }
      

  9.   

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    List<StringBuffer> li = new ArrayList<StringBuffer>();
    List<StringBuffer> temp = new ArrayList<StringBuffer>();
    for (int i = 0; i < args[0].length(); i++) {
    li.add(new StringBuffer("").append(args[0].charAt(i)));
    }
    for (int i = 1; i < args.length; i++) {
    temp.clear();
    for (int j = 0; j < args[i].length(); j++) {
    for (StringBuffer sbTemp : li) {
    StringBuffer tempSB = new StringBuffer(sbTemp);
    tempSB.append(args[i].charAt(j));
    temp.add(tempSB);
    }
    }
    li.clear();
    li.addAll(temp);
    }
    System.out.println("start**********************");
    Collections.sort(li, new Comparator() {
    public int compare(Object o1, Object o2) {
    // TODO Auto-generated method stub
    StringBuffer c1 = (StringBuffer) o1;
    StringBuffer c2 = (StringBuffer) o2;
    return compareChar(c1,c2,0);
    }

    private int compareChar(StringBuffer c1, StringBuffer c2, int inx) {
    if (c1.charAt(inx) > c2.charAt(inx)) {
    return 1;
    } else {
    if (c1.charAt(inx) == c2.charAt(inx)) {
    if(inx++ < c1.length()-2){
    return compareChar(c1,c2,inx);
    }
    return 0;

    } else {
    return -1;
    }
    }
    } });
    for (StringBuffer outTemp : li) {
    System.out.println(outTemp.toString());
    }
    System.out.println("end**********************");
    }