python非递归全排列
2024-10-03 07:11:14
刚刚开始学习python,按照廖雪峰的网站看的,当前看到了函数这一节。结合数组操作,写了个非递归的全排列生成。原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位置插入,生成n+1个新的全排列。因为Python切割数组或者字符串,以及合并比较方便,所以,程序会节省很多代码。
def getArrayInsertCharToStr(STR,CHAR):
arr =[]
s_len = len(STR)
index =0
while index <= s_len:
#分割字符串
arr.append(STR[:index]+CHAR+STR[index:s_len])
index = index + 1
return arr def getArrayInsertCharToArray(array,CHAR):
index = 0
re_array = []
while index < len(array):
re_array = re_array + getArrayInsertCharToStr(array[index],CHAR)
index = index + 1
return re_array def getPermutation(STR):
resultArr = [STR[0]]
for item in STR[1:]:
resultArr = getArrayInsertCharToArray(resultArr,item)
return resultArr print(getPermutation('abc'))
最新文章
- C# 之 DataReader 和 DataSet 的区别
- KVC&;&;&;KVO
- k8s DNS 服务发现的一个坑
- mysql 基本操作语句
- 为什么获取的System.Web.HttpContext.Current值为null,HttpContext对象为null时如何获取程序(站点)的根目录
- rational rose 顺序图的消息加数字
- CentOS6.4 安装nmon
- oracle中截取某个字符前面和后面的值
- Java内部类this$0字段产生的一个bug
- Linux 命令、Shell 杂货铺
- (转载)PHP array_merge() 函数
- 如何制作一个类似Tiny Wings的游戏(2) Cocos2d-x 2.1.4
- C - 哗啦啦村的扩建
- mysql-笔记 架构
- PC逆向之代码还原技术,第四讲汇编中减法的代码还原
- linux中ping带时间及打印内容到文件
- Bugku-CTF之flag在index里
- Spring+SpringMVC+mybatis整合以及注解的使用(三)
- db2命令参数with ur
- Qt网络编程QTcpServer和QTcpSocket的理解