我正在编写Skew算法来构造后缀数组,我有一个长字符串(length>;=4000)。 在倾斜算法中,我必须构造三元组数组和子字符串数组。在
例如:我有一个字符串s = 'abcddd'
。在
'abc', 'bcd', 'cdd', 'ddd'
'abcddd', 'bcddd', 'cddd', 'ddd', 'dd', 'd'
这是我的解决方案:
import numpy as np
# example
string = 'abdcb.....' (length >= 4000)
temp = 'abdcb......###' (length >= 4000)
triples_arr = np.array([])
sub_strings = np.array([])
for i in range (0, len(temp) - 3):
triples_arr = np.append(triples_arr, temp[i:i + 3])
sub_strings = np.append(sub_strings, string[i:string_len])
对于一个长字符串(length>;=4000),需要一分钟才能完成。在
有没有什么办法可以减少这个任务的处理时间?在
使用理解,可以比使用
for
循环更快地构造这些字符串:代码:
测试代码:
^{pr2}$结果:
这可能对您有效,也可能不起作用,但是如果您对
bytes
和memoryview
对象进行操作而不是对字符串对象进行操作,那么许多优化都是可用的。例如,切片内存视图非常便宜。在没有任何外部库和任何循环怎么办?在
输出:
^{pr2}$相关问题 更多 >
编程相关推荐