【发布时间】:2016-07-08 00:46:55
【问题描述】:
按字典顺序打印字符串的所有排列
我可以找到一个字符串的所有排列然后排序吗? 这只是时间复杂度 O(n!) ->for find permutations 然后排序它是
O(nlogn)(如果快速排序或合并被认为是排序算法)。O(n!)+O(nlogn)会很复杂。geeksforgeeks 中给出的解决方案 http://www.geeksforgeeks.org/lexicographic-permutations-of-string/ 这就是
O(n*n!)我在https://www.educative.io/page/11000001/90001找到了另一个解决方案
谁能解释其中哪些是最好遵循的,时间复杂度是多少?请解释
【问题讨论】:
-
蛮力应该是
O(n!),除非你能以某种方式修改排列生成算法以拒绝未排序的字符串,而无需做额外的工作。 -
暴力是一种,即生成排列并对其进行排序?
-
您不能拒绝任何字符串。每个单独的字符串都没有排序,但字符串的所有排列在打印之前都会排序。
-
为什么要对所有排列进行排序?您可以对输入字符串进行排序,然后生成排列,如果正确完成,它们将自动按字典顺序排列。
标签: algorithm permutation