您的位置:首页 > 产品设计 > UI/UE

codility GenomicRangeQuery

2017-08-28 09:25 393 查看
Question: codility Lesson5 GenomicRangeQuery

My Answer:

def solution(S,P,Q):
res = []
slen = len(S)
dic = {'A':1,'C':2,'G':3,'T':4}

next_pos = [[-1] * slen,[-1] * slen,[-1] * slen,[-1] * slen]

next_pos[dic[S[-1] - 1]][-1] = slen - 1
for i in range(slen-2,-1,-1):
next_pos[0][i] = next_pos[0][i + 1]
next_pos[1][i] = next_pos[1][i + 1]
next_pos[2][i] = next_pos[2][i + 1]
next_pos[3][i] = next_pos[3][i + 1]
next_pos[dic[S[i]] - 1][i] = i

for i in range(len(P)):
if next_pos[0][P[i]] != -1 and next_pos[0][P[i]] <= Q[i]:
res.append(1)
elif next_pos[1][P[i]] != -1 and next_pos[1][P[i]] <= Q[i]:
res.append(2)
elif next_pos[2][P[i]] != -1 and next_pos[2][P[i]] <= Q[i]:
res.append(3)
else:
res.append(4)
return res
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: