# 暴力解法classSolution:defget_len(string):str_len =len(string)for i inrange((str_len//2)*2,0,-2):countA, countB =0,0for j inrange(str_len+1-i):str_sub = s[j, i]for k inrange(len(str_sub)):if str_sub[k]=='a':countA +=1if str_sub[k]=='b':countB +=1if countA == countB:returnlen(str_len)# 優(yōu)化法classSolution:defget_len(string):str_len =len(string)numA, numB =[0]*(str_len+1),[0]*(str_len+1)a, b =0,0for i inrange(str_len):if string[i]=='a':a +=1if string[i]=='b':b +=1# 判斷當(dāng)前子串中a或b的數(shù)量numA[i+1]= anumB[i+1]= bif a ==0and b ==0:return0res = a if a > b else b# i與j兩個循環(huán),能保證時間復(fù)雜度為O(n)for i inrange(2*res,0,-2):for j inrange(i, str_len+1):if numA[j]- numA[j-res]== numB[j]- numB[j-res]:return res