我一直在研究一本书中的一个示例,该示例向您展示了如何将字符串排列为所有可能的组合,但是由于我在一般编程方面仍然是一个初学者,所以我实际上无法理解代码是如何工作的!
有人可以分析我提供的代码,并给我一个详尽的解释,说明一切的作用以及它是如何做到的吗?
非常感谢,
亚历克斯。
class PermuteString{
String word;
int index;
PermuteString substringGenerator;
public PermuteString(String s){
word = s;
index = 0;
if(s.length() > 1){
substringGenerator = new PermuteString(s.substring(1));
}
}
public String nextPermutation(){
if(word.length() == 1){
++index;
return word;
}
else{
String r = word.charAt(index) + substringGenerator.nextPermutation();
if(!substringGenerator.morePermutations()){
++index;
if(index < word.length()){
String tailString = word.substring(0, index) + word.substring(index + 1);
substringGenerator = new PermuteString(tailString);
}
}
return r;
}
}
public boolean morePermutations(){
return index < word.length();
}
}
public class PermuteStringDemo {
public static void main(String[] args){
PermuteString p = new PermuteString("opyn");
while(p.morePermutations())
System.out.println(p.nextPermutation());
}
}