我正在做一个项目。我在 Interwebz 上找到了这段关于排列的代码。我想用它作为编写我自己的代码的基础。但是,我不太明白代码中发生了什么。有人可以帮我解释一下代码到底在做什么吗?
public void permutations(String prefix, String s) {
int n = s.length();
if (n == 0)
System.out.println(prefix);
else {
for(int i = 0; i < n; i++){
permutations(prefix + s.charAt(i), s.substring(0, i) + s.substring(i+1, n));
}
}
}
最佳答案
方法permutations
采用字符串前缀
和字符串s
作为其参数。
int
类型n
被设置为字符串s
的长度。 (字符串的长度是它包含的字符数)。
现在我们继续讨论 if
-else
语句。 if
语句的意思是,如果s
的长度为0,即s
是一个空字符串,不包含任何信息,那么我们只需将字符串前缀
打印到控制台即可。然后该方法将跳过 else
部分并执行 permutations
方法之后的代码。
如果 if
语句的条件不满足,我们将运行 else
语句,即对于字符串 s
中的每个字符>,我们将在 prefix
末尾附加(添加)该字符,例如,如果 prefix
最初是“hello”,而该字符是“U” ,我们将得到 prefix
为“helloU”。在添加完 s
中的所有字符后,我们将使用结果作为新的 prefix
字符串。
对于另一个参数,字符串 s
,我们将获取字符串的一部分,从字符 0(含)到位置 i
处的字符(不包括)。请注意,字符串索引从 0 开始,一直到(字符串的长度 - 1)。我们还获取从位置 i + 1(含)处的字符到字符串 s
中最后一个字符的字符串部分。我们将使用这个结果作为新的 s
字符串。
然后我们将再次调用该方法,如果满足 else
条件,该方法将使用新定义的字符串再次执行。这将继续循环,直到不满足 else
条件,此时该方法将停止运行,我们将继续执行下一段代码(如果存在)。
关于java - 有人可以解释一下这段代码吗?排列码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13735065/