gpt4 book ai didi

java - Java中的字符串递归方法

转载 作者:行者123 更新时间:2023-12-04 10:24:13 24 4
gpt4 key购买 nike

我正在尝试编写一个递归程序:计算所有长度为 n 的字符串可以由 string 中给出的所有字符组成,但没有在 sub 中列出的字符串允许作为子串出现。

这是我目前写的程序,但是还没有实现sub的限制,它只计算 string 的排列.

    public static void method(String string)
{
method(string, "");
}
public static void method(String string, String soFar)
{
if (string.isEmpty())
{
System.err.println(soFar + string);
}
else
{
for (int i = 0; i < string.length(); i++)
{
method(string.substring(0, i) + string.substring(i + 1, string.length()), soFar + string.charAt(i));
}
}
}

最佳答案

从您的示例中,我看到您想要所有排列 重复 n字符,但您的代码生成所有排列 不重复全部 人物。

这应该可以解决您的问题,如示例中所述:

    public static List<String> method(String string, int n, List<String> sub)
{
List<String> results = new ArrayList<>();
method(string, n, "", sub, results);
return results;
}
private static void method(String string, int n, String soFar, List<String> sub, List<String> results)
{
for (String s: sub)
{
if(soFar.length() >= s.length() && soFar.substring(soFar.length() - s.length()).equals(s))
{
return;
}
}
if (soFar.length() == n)
{
results.add(soFar);
}
else
{
for (int i = 0; i < string.length(); i++)
{
method(string, n, soFar + string.charAt(i), sub, results);
}
}
}

此外,附加 string 是多余的当 string是空的。

关于java - Java中的字符串递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60693943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com