花朵统计
提交数: 11, 通过率: 72.73%, 平均分: 76.36
题目描述:
公路边花朵和电线杆排成一列,相互映衬风景独好, 如果一簇花朵的左边和右边都至少有一根电线杆, 那么这簇花朵就满足在两根电线杆之间。 字符串 s 只包含字符* 和 | , 其中 * 表示一簇花朵 ,|表示一根电线杆。
编写程序,给定一列花朵和电线杆,然后输入变量 lefti 和 righti 的值, 统计子字符串 s[lefti]~s[righti]中在两根电线杆之间的花朵的数目。
输入格式:
第一行一个字符串s (长度不超过 100000 )
第二行两个整数lefti, righti ( 0<=lefti<=righti<字符串s的长度 )
输出格式:
一行一个数字,表示答案
样例输入:
***|**|*****|**||**|* 1 17
样例输出:
9
提示:
请完善以下代码:
s = input()
lefti, righti = map( int , input().split() )
_①_____________
ps = [0]*(n+1) # ps[i+1]存储 s[:i+1]中花朵的总数
left = [0] * n # left[i]存储 i 左侧最近电线杆的位置
right = [0] * n
c, res = -1, 0
for i in range(n):
ch=s[i]
if ch == '|':
c= i
ps[i+1] = ps[i]
else:
_②_______________
left[i] = c
c = n
for i in range(n-1, -1, -1):
if s[i] == '|':
c = i
right[i] = c
L, R = right[lefti], left[righti]
if _③______________ :
res = ps[R+1]-ps[L+1]
print( res )
时间限制: 1000ms空间限制: 256MB