100分求解java中字母全排列的问题,在线等 如果输出aaa呢?是只输出一个aaa吗?也就是说去掉重复的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用递归实现的: static List arrange(String s){ if ((s==null)||(s.length()==0)) throw new IllegalArgumentException(); int len=s.length(); List list=new ArrayList(); if(len==1) { list.add(s); return list; } char c=s.charAt(0); List temp=arrange(s.substring(1)); StringBuffer sb=new StringBuffer(len); for(int i=0;i<temp.size();i++){ for(int j=0;j<len;j++){ sb.setLength(0); sb.append((String)temp.get(i)); sb.insert(j,c); list.add(sb.toString()); } } return list; } 如果有10个字符我运行时就 OutOfMemoryError了.效率比较差 to:treeroot(根根)你测试这个方法的原代码可以让我看一下吗?谢谢我测试的时候总是出错,哎!!~~~~~~~~~~ 真呀晕,除了没有倒入java.util.*;之外我实在想不出怎么会出错。只要会写HelloWorld就没有问题 //算法就是treeroot(根根)的//Pailie.javaimport java.util.*;import java.io.*;public class Pailie{ static List arrange(String s) { if ((s==null)||(s.length()==0)) throw new IllegalArgumentException(); int len=s.length(); List list=new ArrayList(); if(len==1) { list.add(s); return list; } char c=s.charAt(0); List temp=arrange(s.substring(1)); StringBuffer sb=new StringBuffer(len); for(int i=0;i<temp.size();i++){ for(int j=0;j<len;j++){ sb.setLength(0); sb.append((String)temp.get(i)); sb.insert(j,c); list.add(sb.toString()); } } return list; } public static void main(String[] args) throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Please input a string:"); String str=br.readLine(); List l=arrange(str); for(int i=0;i<l.size();i++) { System.out.println(l.get(i)); } }} 服务端程序崩溃 正则表达式,这个该怎么写? 关于 字符处理的简单问题 如何利用JNI获得系统目录! 怎样取得JAVA类里的常量名 -- 动态取得方式 java里有没有类似c# 的@可以防止字符串转义 多线程,锁的检测问题,有请高手,up有分! 请问谁有《JBuilder开发人员指南》,发给我好吗 俺是新手 一个有关HashMap取值的问题 ThinkInJava里的一个例程,没看明白,请指点。 System.getProperty("iscp932")什么意思,
if ((s==null)||(s.length()==0)) throw new IllegalArgumentException();
int len=s.length();
List list=new ArrayList();
if(len==1) {
list.add(s);
return list;
} char c=s.charAt(0);
List temp=arrange(s.substring(1));
StringBuffer sb=new StringBuffer(len);
for(int i=0;i<temp.size();i++){
for(int j=0;j<len;j++){
sb.setLength(0);
sb.append((String)temp.get(i));
sb.insert(j,c);
list.add(sb.toString());
}
}
return list;
}
效率比较差
你测试这个方法的原代码可以让我看一下吗?谢谢我测试的时候总是出错,哎!!~~~~~~~~~~
只要会写HelloWorld就没有问题
//Pailie.java
import java.util.*;
import java.io.*;public class Pailie
{ static List arrange(String s)
{
if ((s==null)||(s.length()==0)) throw new IllegalArgumentException();
int len=s.length();
List list=new ArrayList();
if(len==1) {
list.add(s);
return list;
} char c=s.charAt(0);
List temp=arrange(s.substring(1));
StringBuffer sb=new StringBuffer(len);
for(int i=0;i<temp.size();i++){
for(int j=0;j<len;j++){
sb.setLength(0);
sb.append((String)temp.get(i));
sb.insert(j,c);
list.add(sb.toString());
}
}
return list;
}
public static void main(String[] args) throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please input a string:");
String str=br.readLine();
List l=arrange(str);
for(int i=0;i<l.size();i++)
{
System.out.println(l.get(i));
}
}
}