字符串排列组合 java,java 排列组合算法

  字符串排列组合 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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: