【发布时间】:2019-04-20 17:41:39
【问题描述】:
我无法理解这个字符串排列代码是如何工作的。我知道它是如何将字符从 str 移动到前缀的,但是当我追踪它是如何工作的时,我完全不知道它是如何进入下一个排列的。
例如单词“cubs”
它的输出是字符串前缀 + " " + String str
幼崽
c ubs
cu bs
幼崽
小熊们
cu bs
public static void main(String[] args) {
permutation("cubs");
}
public static void permutation(String str) {
permutation("", str);
}
public static void permutation(String prefix, String str) {
int n = str.length();
if (n == 0) {
System.out.println(prefix);
}
else {
for (int i = 0; i < n; i++) {
System.out.println(prefix + " " + str);
permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n));
}
}
}
【问题讨论】:
-
尝试看看递归是如何工作的。这可能是你错过的。也许这可以给你一些线索en.wikipedia.org/wiki/…。