N = 100000
s = ''.join([ chr(c % 26 + ord('a')) for c in range(N) ])
l = [ (26*i,26*i+3) for i in range(N//26) ]
l.sort(lambda x, y : cmp(x[0], y[0]))
ns = []
i = 0
for (start,end) in l:
ns.append(s[i:start])
i = end
ns.append(s[end:])
s = ''.join(ns)
假设你的一对(开始,结束)不包含在结尾,我就这样做 (我嵌入了一个可扩展的测试用例,这样您就可以运行一些性能测试):
当N=100000(字符串的顺序)时,这个脚本的运行时间不超过30秒。虽然很慢,但可能可以忍受。当然,正确的数据结构是解决这个特殊问题的关键。因此,如果您需要执行大量的运行,您可能应该放弃Python或者在Python中使用适当的数据结构。你知道吗
不要担心性能,除非你已经证明它是一个瓶颈
如果速度不够快,就不能使用Python或C语言,必须选择更好的数据结构
相关问题 更多 >
编程相关推荐