위 알고리즘을 코드로 나타내면 다음과 같다.
public static void permuteAndPrint(String str) {
permuteAndPrint("", str);
}
private static void permuteAndPrint(String prefix, String str) {
int n = str.length();
if (n == 0) {
System.out.print(prefix + " ");
} else {
for (int i = 0; i < n; i++) {
permuteAndPrint(prefix + str.charAt(i),
str.substring(i + 1, n) + str.substring(0, i));
}
}
}
최초 접두사는 빈 문자열인 ""이어야 한다. 반복할 때마다 접두사에 문자열의 다음 문자를 이어 붙인다(고정한다). 메서드를 진행하며 남은 글자들을 다시 전달한다.
위 메서드가 Strings라는 유틸리티 클래스에 들어 있다고 가정해보자. 그럼 아래처럼 호출할 수 있다.
Strings.permuteAndStore("ABC");
결과는 다음과 같을 것이다.
ABC ACB BCA BAC CAB CBA