字符串排列组合 java,java 排列组合算法
序
在此研究:
1)给定字符串,如何排列和组合其中的字符
2)了解更多关于Python递归的知识。
主题内容
在指定位置写代码,完成函数,根据给定的字符串,给出一个包含组成字符串的所有字符数组的字符串。例如,如果字符串是abc,则结果是abc、acb、bac、bca、cab和cba。(提示:“此字符左边的所有字符数组和此字符右边的所有字符数组”可能会删除某个位置的字符。)
解放思想
这个问题可以递归解决。
1)首先确认字符串的第一个字符是谁。对于长度为n的字符串,可能有n种。
2)然后,问题由“返回一个字符串中字符的排列组合”改为“返回第一个字符,排除第一个字符的字符串排列组合”。有点大有点小,感觉是分开的。
网上很多地方都有具体代码的答案。在百度上搜索关键词“Python字符串数组组合”就行了,这里就不写其他代码了。引用[1]。这是因为我认为它更详细。
代码如下[1]:defperm(s= ):
#这里是递归函数的出口。因为这里是一个长度为1的字符串,意味着数组的组合就是它本身。
iflen(s )=1:
返回
Sl=[] #保存所有可能的字符串数组组合
ForIinrange(len) s): #)循环,对应解题思路1)确定字符串的第一个字符是谁,有n种可能(n是字符串s的长度)
forjiperm(s[0:# I]s[I 1:]):)这个循环对应的是解题思路。2)进入递归,s[0:i] s[i 1:]取s中的s[i]。
Sl.append(s[I]j)解决思路2)问题由“返回一个字符串中字符的排列组合”* *改为“* *返回第一个字符,排除第一个字符的排列组合”
返回SL
defmain(:)
perm_nums=perm(abb))的字母可以相同
no _ repeat _ nums=list(set(perm _ nums))去掉权重。太牛逼了。这个代码
print(perm_nums),len (perm_nums),perm_nums).
print(no_repeat_nums),len (no_repeat_nums),no_repeat_nums).
传球
if __name__==__main__ :
Master())
摘要
特性数
【通常是pl。]数组;组合;替换
任何可以订购的不同方式
x,y,z的便携性是xyz,xzy,yxz,yzx,zxy,zyx。
x、y和z的组合可以是xyz、xzy、yxz、yzx、zxy和zyx。
另外Python的递归一开始也不太清楚,所以看不懂代码。参考[2],你会找到一些。
此外,还查阅了相关网站[3]和[4]。
参考
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。