生成字符串所有组合的算法
2022-09-02 05:08:06
我在网上找到了一个链接,显示了生成字符串所有组合的算法:http://www.mytechinterviews.com/combinations-of-a-string
算法复制如下。
void combine(String instr, StringBuffer outstr, int index)
{
for (int i = index; i < instr.length(); i++)
{
outstr.append(instr.charAt(i));
System.out.println(outstr);
combine(instr, outstr, i + 1);
outstr.deleteCharAt(outstr.length() - 1);
}
}
combine("abc", new StringBuffer(), 0);
我不明白的是这句话:
outstr.deleteCharAt(outstr.length() - 1);
如果我删除此行,程序显然不再起作用,但是为什么首先需要它?我理解递归的想法,即我们改变一个初始字符并递归其余字符,但是deleteChar行似乎不适合逻辑上的任何地方。添加 outstr.deleteCharAt 行的原因是什么?