01数字串

提交数: 585, 通过率: 44.27%, 平均分: 50.51

题目描述:

 有一串只包含“0” 、 “1” 的数字串 s(长度不超过 1000) , 现要从数字串 s 中截取一段数字子串(该子串一定存在), 使得数字子串中“0” 、 “1” 的数量相等。
编写程序, 求数字串 s 中满足上述要求的最长数字子串的长度及其在数字串 s 中的位置(若有多个相同的最长长度, 取第一次出现的位置)。 

输入格式:

一个01串

输出格式:

输出两行,第一行最多的长度,第二行 数字串 s 中的位置 

样例输入:

01100

样例输出:

4
0 3

提示:

请完善程序:

s = input( )
n = len(s)
a = [0] * (n+1)
b = [0] * (n+1)
a[0] = b[0] = 0
for i in range(1, n + 1):
    if s[i-1] == "0":
        a[i] = a[i - 1]
        b[i] = b[i - 1] + 1
    else:
        a[i] = a[i - 1] + 1
        _______________           #①
max_len = 0
start = end = 0
for i in range( 1, n ): #枚举 [ i , j ]  -->对应原字符串下标是 [ i-1, j-1 ]
    for j in range(i + 1, n + 1):
        if __________________________:   #② 
            if max_len < j - i + 1:
                max_len = j - i + 1
                start = ____________        #③
                end = j - 1
print( max_len )
print( start, end )
时间限制: 1000ms
空间限制: 256MB

来源: 高二12月月考