java实现字符串排列组合问题
本文为大家介绍了java实现字符串排列组合问题,供大家参考,具体内容如下
importjava.util.ArrayList; importjava.util.Collections; /** *输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac, *bca,cab和cba。 * *@authorpomay * */ publicclassSolution_stringarrange { publicArrayListPermutation(Stringstr) { if(str==null) returnnull; ArrayList list=newArrayList (); char[]pStr=str.toCharArray(); Permutation(pStr,0,list); Collections.sort(list); returnlist; } staticvoidPermutation(char[]str,inti,ArrayList list) { //如果为空 if(str==null) return; //如果i指向了最后一个字符 if(i==str.length-1) { if(list.contains(String.valueOf(str))) return; list.add(String.valueOf(str)); }else { //i指向当前我们做排列操作的字符串的第一个字符 for(intj=i;j list=changestring.Permutation(str); for(inti=0;i 组合:
要么选择长度为n的字符串中的第一个字符,那么要在其余的长度n-1的字符串中选择m-1个字符
要么不选择长度为n的字符串中的第一个字符,那么要在其余的长度n-1的字符串中选择m个字符
importjava.util.ArrayList; importjava.util.List; /** *输入一个字符串,按字典序打印出该字符串中字符的所有组合。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串a,b,c,ab,ac,bc *,abc。求n个字符组成长度为m的组合问题 * *@authorpomay * */ publicclassSolution_stringcombination { //求字符串中所有字符的组合abc>a,b,c,ab,ac,bc,abc publicstaticvoidperm(Strings) { Listresult=newArrayList (); //从一个开始 for(inti=1;i<=s.length();i++) { combination(s,i,result); } } //从字符串s中选择m个字符 publicstaticvoidcombination(Strings,intm,List result) { //如果m==0,则递归结束。输出当前结果 if(m==0) { for(inti=0;i 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。