Link: 283. Move Zeroes
Track: Amazon tag
Question
Restate the problem
Edge Case
Method 1 - Two pointer
Method 2 - Optimal
Method 1
Approach
Complexity
- Time Complexity: O()
- Space Complexity: O(1)
Code
class Solution:
def countBinarySubstrings(self, s: str) -> int:
n = len(s)
ans = 0
for i in range(1, n):
if s[i] == s[i - 1]:
continue
left_char = s[i - 1]
right_char = s[i]
l, r = i - 1, i
while l >= 0 and r < n and s[l] == left_char and s[r] == right_char:
ans += 1
l -= 1
r += 1
return ansMethod 2
Approach
Complexity
- Time Complexity: O()
- Space Complexity: O(1)
Code
class Solution:
def countBinarySubstrings(self, s: str) -> int:
prev = 0
curr = 1
ans = 0
for i in range(1, len(s)):
if s[i] == s[i-1]:
curr += 1
else:
ans += min(prev, curr)
prev = curr
curr = 1
ans += min(prev, curr)
return ansHistory
- Feb-22-2026 Hinted