【发布时间】:2016-05-11 08:00:57
【问题描述】:
在最近的一次采访中得到了这个问题。基本字符串比较有点扭曲。我有一个输入字符串STR1 = 'ABC'。当要比较的字符串时,我应该返回“Same/Similar”,STR2 具有这些值中的任何一个 - 'ACB' 'BAC' 'ABC' 'BCA' 'CAB' 'CBA' (即相同的字符,相同的长度和相同的否发生次数)。当时唯一的答案是继续“合并排序”或“快速排序”,因为它的复杂性是对数的。有没有其他更好的算法可以达到上述效果?
【问题讨论】:
-
快速排序的最坏情况复杂度实际上是二次的;只是它是一种非常快速的简单算法,因此对于相当小的 n 值,它往往优于 n log n 算法。跨度>
-
使用查找表。 O(N)。
-
另外,最好的排序算法是平均情况下的 nlogn,而不是对数。除非我们对数据有所了解