擅长:python、mysql、java
<p>如果对列表进行排序,则每个元素要么是下一个元素的前缀,要么不是其中任何元素的前缀。因此,您可以写下:</p>
<pre><code>ls.sort()
[ls[i] for i in range(len(ls))[:-1] if ls[i] != ls[i+1][:len(ls[i])]] + [ls[-1]]
</code></pre>
<p>这将是<code>n log(n)</code>排序加上一次遍历列表(<code>n</code>)。在</p>
<p>对于您当前的排序列表,它也稍微快一点,因为它是线性的,timeit给出了2.11我们。在</p>
<p>使用<code>zip</code>可以稍微加快实现速度(但不是渐进的),而且更具python风格:</p>
^{pr2}$
<p>时间是1.77美元</p>