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添加的字符 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |