以赛促学,参加全国大学生算法竞赛,期望提升python编程水平
L题问题描述如下:
我的代码如下:
def SelectDuplicate(c):
a = []
x = []
for i in range(0,len(c)):
if i + 1 < len(c):
if c[i] == c[i + 1]:
x.append(c[i])
else:
x.append(c[i])
a.append(x)
x = []
else:
x.append(c[len(c) - 1])
a.append(x)
return a
def MaxSelect(x):
list2=[]
len1=len(x)
for i in range(0,len1):
m=x[:]
m.remove(m[i])
list4=[]
for i in range(0,len(m)):
list4.extend(m[i])
list3=SelectDuplicate(list4)
len2=len(max(list3))
list2.append(len2)
len3=max(list2)
return len3
if __name__ == '__main__':
n=input()
s=input()
list_select=SelectDuplicate(s)
len_max=MaxSelect(list_select)
print(len_max)
思想为先通过SelectDuplicate©:函数把连续的字符分隔开来形成列表,如下:
[['0', '0', '0', '0', '0'],
['1', '1', '1', '1', '1', '1', '1', '1', '1'],
['0', '0', '0', '0', '0', '0', '0', '0'],
['1', '1', '1', '1', '1', '1', '1', '1']]
然后通过MaxSelect函数依次删除列表某一列再重新拼接组合,最后计算长度,但是时间复杂度超过了1s,想不通