c*******r 发帖数: 309 | 1 这下边的code我总觉得初始判断有问题, 如果str==null||str.length()==0返回null
这个recursion还有效么
public ArrayList permutes(String str){
if(str==null||str.length()==0)
return null;
ArrayList result=new ArrayList();
char first=str.charAt(0);
String other=str.substring(1);
ArrayList strings=permutes(other);
for(int i=0;i
for(int j=0;j
String temp=insert(strings.get(i),first,j);
result.add(temp);
}
}
return result;
} | p*****p 发帖数: 379 | 2 好像应该return new ArrayList();
没用java写这个不确定 | c*******i 发帖数: 30 | 3
null
str==null没事,
str.length()==0 得return new ArrayList();
不然, 这里会有问题~~
ArrayList strings=permutes(other);
for(int i=0;i
【在 c*******r 的大作中提到】 : 这下边的code我总觉得初始判断有问题, 如果str==null||str.length()==0返回null : 这个recursion还有效么 : public ArrayList permutes(String str){ : if(str==null||str.length()==0) : return null; : ArrayList result=new ArrayList(); : char first=str.charAt(0); : String other=str.substring(1); : ArrayList strings=permutes(other); : for(int i=0;i
| p*****2 发帖数: 21240 | | b******g 发帖数: 77 | 5 Prof. Sedgewick的书里讲过 generate permutation 的算法。
比leetcode 和 150 的解法 快 且简单
void collectPermutation(string& txt, vector &bag)
{
collectPermutation(txt, txt.length(), bag);
}
void collectPermutation(string& txt, long N, vector& bag)
{
if (N == 1)
{
bag.push_back(txt);
return;
}
for (long i = 0; i < N; ++i)
{
swap(txt[i], txt[N]);
collectPermutation(str, N - 1, bag);
swap(txt[i], txt[N]);
}
} |
|