花朵统计

提交数: 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