21 lines
589 B
Python
21 lines
589 B
Python
def FasterSymbolArray(Genome, symbol):
|
|
array = {}
|
|
n = len(Genome)
|
|
ExtendedGenome = Genome + Genome[0:n//2]
|
|
array[0] = PatternCount(symbol, Genome[0:n//2])
|
|
for i in range(1, n):
|
|
array[i] = array[i-1]
|
|
if ExtendedGenome[i-1] == symbol:
|
|
array[i] = array[i]-1
|
|
if ExtendedGenome[i+(n//2)-1] == symbol:
|
|
array[i] = array[i]+1
|
|
return array
|
|
|
|
|
|
def PatternCount(Text, Pattern):
|
|
count = 0
|
|
for i in range(len(Text)-len(Pattern)+1):
|
|
if Text[i:i+len(Pattern)] == Pattern:
|
|
count = count+1
|
|
return count
|