#参数S是待查字符串
#返回值是一个整数,是最大字符串长度
class Solution:
def getAns(self, S):
ans = 0
arr = [0 for i in range(len(S))]
sets = {}
if S[0] == ‘A’:
arr[0] = 1
sets[1] = 0
else:
arr[0] = -1
sets[-1] = 0
for i in range(1, len(S)):
if S[i] == ‘A’:
arr[i] = arr[i - 1] + 1
if arr[i] == 0:
ans = i + 1
continue
if arr[i] in sets:
ans = max(ans, i - sets[arr[i]])
else:
sets[arr[i]] = i
else:
arr[i] = arr[i - 1] - 1
if arr[i] == 0:
ans = i + 1
continue
if arr[i] in sets:
ans = max(ans, i - sets[arr[i]])
else:
sets[arr[i]] = i
return ans
if name == ‘main’:
S = “ABABAB”
solution = Solution()
print(" AB字符串为:", S)
print(" 最长AB出现次数相同的子字符串长度是:", solution.getAns(S))
最长ab子串
最新推荐文章于 2024-03-28 11:47:36 发布