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 ans

Method 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 ans

History

  • Feb-22-2026 Hinted