비니 렁 :
길이의 모든 문자열을 계산하기 위해 : 나는 재귀 프로그램을 작성하려고 해요 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));
}
}
}
Mirea 라두 :
귀하의 예제에서 나는 모든 순열 원하는 것을 알 반복에 대한 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
비어 있습니다.