字符串全排列----循环解决

一、什么是全排列

        百科:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

        简单来说:一个字符串里面所有字符的排列情况叫做全排列。

二、全排列----循环执行

        因为是所有字符的排列情况,所以要对字符串的每一个字符进行访问,并将找到在当前字符串情况所有可以插入的位置,然后保存返回,插入下一个字符时在此基础上继续操作,直到最后一个字符找到了所有可插入的位置。整个遍历结束,此时集合里面保存了所有的每个字符的排列方式,体现为:集合里面有字符串的每个字符随机排列的新字符串,且是所有可能的排列情况。

        初始化一个集合res用来保存所有遍历字符串的情况,并最终返回该集合,初始化时保存第一个字符,因为第一个字符的可插入的位置只有一个。

        第一层循环,遍历对象是字符串里面从索引1位置开始到结束的所有字符:

        获取当前索引处的字符(从字符串的第二个字符开始,索引1位置),初始化第二个集合new_res,用来临时保存当前所有的字符串排列的情况。

        第二层循环,遍历对象是res,res保存了上一个字符插入后的所有排列情况。在此res上的每一种情况插入下一个字符。

        1.我们在插入第2个字符时就会有两个位置(例如:在字符串“a”中插入b,有ba、ab

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值