def length_of_longest_substring(str, k):
#####first block
start=0
charFreq={}
maxRepeatingLetter=0
maxLength=0
for end in range(len(str)):
rightEnd=str[end]
if rightEnd not in charFreq:
charFreq[rightEnd]=0
charFreq[rightEnd]+=1
maxRepeatingLetter = max(maxRepeatingLetter, charFreq[rightEnd])
if (end-start +1 - maxRepeatingLetter)>k:
leftEnd=str[start]
charFreq[leftEnd]-=1
start+=1
maxLength = max(maxLength, end-start+1)
return maxLength
#####Second block
start=0
charFreq={}
maxLen=0
maxContinousOcc=0
for end in range(len(arr)):
rightEnd=arr[end]
if rightEnd not in charFreq:
charFreq[rightEnd]=0
charFreq[rightEnd]+=1
maxContinousOcc=max(maxContinousOcc, charFreq[rightEnd])
if (end-start+1-maxContinousOcc)>k:
leftEnd=charFreq[start]
charFreq[leftEnd]-=1
start+=1
maxLen=max(maxLen, end-start+1)
def main():
print(length_of_longest_substring([0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1], 2))
main()
First block works perfectly fine and the second block does not for the given set of inputs.
Please help