给定一个字符串 S 和一个整数 k,您需要仅使用字符串 S 中存在的字符查找并返回大小为 k 的所有可能字符串。这些字符可以根据需要重复多次。
import java.util.*;
public class Solution {
public static String[] allStrings(String charSet, int len) {
// Write your code here
HashMap<Character,Boolean> map=new HashMap<>();
for (int i=0; i<charSet.length();i++){
if(!map.containsKey(charSet.charAt(i))){
map.put(charSet.charAt(i),true);
}
}
ArrayList<Character> al=new ArrayList<Character>();
for (Map.Entry<Character,Boolean> entry:map.entrySet()){
al.add(entry.getKey());
}
ArrayList<String> real=new ArrayList<String>();
String pre="";
perm(pre,al,len,real);
String []a=new String[real.size()];
a=real.toArray(a);
return a;
}
public static void perm(String pre,ArrayList<Character> al,int k,ArrayList<String> real) {
if(k==0){
real.add(pre);
return;
}
for(int i=0;i<al.size();i++){
pre=pre+al.get(i);
perm(pre,al,--k,real);
}
}
}
在这里我收到堆栈溢出错误@
pre=pre+al.get(i);
perm(pre,al,--k,real);