【发布时间】:2021-08-12 13:20:41
【问题描述】:
对于字符串 s = "abcd" ,k=3 那么答案应该是:
abc
abd
acd
bcd
使用递归(k=3)的java代码:
public class SubString {
static ArrayList<String> al = new ArrayList<>();
public static void main(String[] args) {
String s = "abcd";
findsubsequences(s, ""); // Calling a function
for (String subString : al) {
if (subString.length() == 3) {
System.out.println(subString);
}
}
}
public static void findsubsequences(String s, String ans) {
if (s.length() == 0) {
al.add(ans);
return;
}
findsubsequences(s.substring(1), ans + s.charAt(0));
findsubsequences(s.substring(1), ans);
}
}
我想以最快的方式通过递归找到所有可能的长度为 k 的子字符串,并且在 arraylist 中不使用 foreach
【问题讨论】:
-
问题/问题是什么?代码不起作用吗?不够快/不够高效?
-
我不想在 main 方法中使用 foreach,我需要像 findsubsequences(String s, int k) 这样的方法来查找所有可能的长度为 k 的子字符串
-
那么你应该检查
findsubsequences中ans的长度,当ans足够长时停止深入。 -
能不能具体帮我写一下,如果我的英文不好见谅
标签: java string algorithm recursion substring