我正在做一个项目。我在 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
正在接受一个字符串prefix
和一个字符串s
作为其参数。
这int
type n
被设置为字符串的长度s
。 (字符串的长度是它包含的字符数)。
现在我们继续if
-else
声明。这if
声明是说,如果长度s
为 0,即s
是一个空字符串并且不包含任何信息,那么我们只是打印该字符串prefix
而不是控制台。然后该方法将跳过else
部分并执行之后的代码permutations
method.
If the if
声明的条件不满足,我们将运行else
语句是说,对于字符串中的每个字符s
,我们将在末尾附加(添加)该字符prefix
,例如,如果prefix
最初是“hello”,字符是“U”,我们会得到prefix
说“你好”。当我们完成添加所有字符后s
,我们将使用结果作为新的prefix
细绳。
对于另一个参数,字符串s
,我们将获取字符串的一部分,从字符 0(含)到位置处的字符i
(独家的)。请注意,字符串索引从 0 开始,一直到(字符串的长度 - 1)。我们还获取从位置 i + 1(含)处的字符到字符串中最后一个字符的字符串部分s
。我们将使用这个结果作为新的s
String.
然后我们将再次调用该方法,然后该方法将使用新定义的字符串再次执行(如果else
条件满足。这将继续循环,直到else
不满足条件,此时该方法将停止运行,我们将继续执行下一段代码(如果存在)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)