加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:18:37 所属栏目: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.
我发现一个在线的链接,显示一个算法来生成字符串的所有组合: 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添加的字符

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读