编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符 例如: 原始字符串是"abc",打印得到下列所有组合情况 "a" "b" "c" "ab" "b
请问大神这么做怎么错了
package exam;
import java.io.*;
import java.util.*;
public class pllll {
public static void main(String[] args)throws Exception {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String p=br.readLine();
yy(br,p );
}
public static void yy(BufferedReader br,String p ) throws Exception
{
int i,j; String ee=p; String r = null,t = null,q=null ;
List<String>list=new ArrayList<String>();
///////////////////////////////////////////////////////////////////
for(i=0;i<p.length();i++)
{
// sop(p.substring(i,i+1)+" ");////////////第一行
}
// System.out.println();
////////////////////////////////////////////////////////////////////
for(i=0;i<p.length();i++)
{
for(j=0;j<p.length();j++)
{
if(i!=j)
{
r=p.substring(i, i+1);
t=ee.substring(j,j+ 1);
q=r+t;
list.add(q);
//sop(q+" "); ////////////第二行
}
}
}
////////////////////////////////////////////////////////////////////
Iterator<String> iterator = list.iterator();
while(iterator.hasNext())
{
ee= iterator.next();
//sop(ee);
yy(ee,p);
}
}
public static void yy(String ee,String p) throws Exception
{ List<String>list=new ArrayList<String>();
int i,j; int k=2;
String r = null,t = null,q=null ;
for(i=0;i<p.length();i++)
{
r=p.substring(i, i+1);
t=ee.substring(0, k);//as ad sa sd da ds ,(0, 2)就是1,2位的,每个(as)(ad)....都是1,2位的即sop(t+" ");输出as ad sa sd da ds
q=r+t;
list.add(q);
sop(q+" ");
}
Iterator<String> iterator = list.iterator();
while(iterator.hasNext())
{
ee= iterator.next();
if(k<p.length()+1)
{ k++;
yy(ee,p) ;
}
}
}
public static void sop(Object obj)
{
System.out.print(obj);
}
}
------解决方案--------------------public static void yy(String ee,String p)
目测死循环了,楼主的程序写的不对了,得到的组合又会再组合,还有代码太乱
------解决方案--------------------没看懂楼主的意思
------解决方案--------------------程序错,是小事,程序错只是结果,怕的是,你的思想是错的,楼主发的几个关于排序组合的贴子都看了,确实没看懂楼主是怎么样的想法。