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;
ArrayListlist=newArrayList();
char[]pStr=str.toCharArray();
Permutation(pStr,0,list);
Collections.sort(list);
returnlist;
}
staticvoidPermutation(char[]str,inti,ArrayListlist)
{
//如果为空
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;jlist=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,Listresult)
{
//如果m==0,则递归结束。输出当前结果
if(m==0)
{
for(inti=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。