一、什么是全排列
百科:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
简单来说:一个字符串里面所有字符的排列情况叫做全排列。
二、全排列----循环执行
因为是所有字符的排列情况,所以要对字符串的每一个字符进行访问,并将找到在当前字符串情况所有可以插入的位置,然后保存返回,插入下一个字符时在此基础上继续操作,直到最后一个字符找到了所有可插入的位置。整个遍历结束,此时集合里面保存了所有的每个字符的排列方式,体现为:集合里面有字符串的每个字符随机排列的新字符串,且是所有可能的排列情况。
初始化一个集合res用来保存所有遍历字符串的情况,并最终返回该集合,初始化时保存第一个字符,因为第一个字符的可插入的位置只有一个。
第一层循环,遍历对象是字符串里面从索引1位置开始到结束的所有字符:
获取当前索引处的字符(从字符串的第二个字符开始,索引1位置),初始化第二个集合new_res,用来临时保存当前所有的字符串排列的情况。
第二层循环,遍历对象是res,res保存了上一个字符插入后的所有排列情况。在此res上的每一种情况插入下一个字符。
1.我们在插入第2个字符时就会有两个位置(例如:在字符串“a”中插入b,有ba、ab

716

被折叠的 条评论
为什么被折叠?



