java – 生成字符串的所有组合的算法

前端之家收集整理的这篇文章主要介绍了java – 生成字符串的所有组合的算法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我发现一个在线的链接,显示一个算法来生成字符串的所有组合: 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行的原因是什么?

解决方法

outstr.deleteCharAt的调用通过删除outstr的最后一个字符来计算outstr.append的效果.

每个循环迭代进行如下:

>附加一个字符>打印结果>在i级执行递归调用>删除我们在步骤1添加的字符

猜你在找的Java相关文章