时间:2021-05-19
1.可重复排列:abc三个字符组成的所有长度为3的字符串,aaa,aab,aac......ccc 一共27种
利用递归的思想,第一个字符可以从abc中选择一个,三种选择,之后问题转化为abc组成长度为2的字符的情况,循环递归后可以求出所有的可能。控制好循环退出条件即可。
利用递归可以处理,不知道字符长度的情况下,即通用处理。如果知道长度,只需要利用多层循环,也可以得出结论。
可重复选择,一共27种情况,结果如下图所示
2.全排列:还是abc三个字符,全排列即字符不能重复。最后 3*2 =6种结果
可以利用1中的方法,只要判断3个字符是否相等,都不相等的才是需要的全排列里的一个。这样的时间复杂度为n^n,而全排列的种类为n!所以需要设计一种n!的算法。
也可以利用递归,第一个字符串一共有n种选择,剩下的变成一个n-1规模的递归问题。而第一个字符的n种选择,都是字符串里面的。因此可以使用第一个字符与1-n的位置上进行交换,得到n中情况,然后递归处理n-1的规模,只是处理完之后需要在换回来,变成原来字符的样子。
运行结果如下图所示,一共6种组合
3.组合:abc三个字符的所有组合
求所有组合也就是abc各个位是否选取的问题,第一位2中可能,第二位2种。。。所以一共有2^n种。用0表示不取,1表示选取,这样可以用110这样的形式表示ab。abc一共的表示形式从0到2^3-1。然后按位与运算,如果结果为1就输出当前位,结果0不输出。
输出结果如下,第一行为空,表示一个都不取
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文为大家介绍了java实现字符串排列组合问题,供大家参考,具体内容如下importjava.util.ArrayList;importjava.util.Co
字符串的全排列,具体内容如下输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如,输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,
本文实例讲述了C#查找字符串所有排列组合的方法。分享给大家供大家参考。具体实现方法如下://1.removefirstchar//2.findpermutati
题目描述:设计一个程序,当输入一个字符串时,要求输出这个字符串的所有排列。例如输入字符串abc,要求输出由字母a、b、c所能排列出来的所有字符串abc,acb,