Generate Binary Strings Without Consecutive 1s

Asked atGoogle
1Give yourself 5 minutes
2Answer out loud, not in your head
3Then compare with the answer below

The problem

Given an integer n, return all binary strings of length n that do not contain consecutive 1s. Return the result in lexicographically increasing order.

A binary string is a string consisting only of characters** '0'** and** '1**'.

Input: n = 3 Output: ["000", "001", "010", "100", "101"] **Explanation: **All strings are of length 3 and do not contain consecutive 1s.

Input: n = 2 **Output: **["00", "01", "10"]

Input: n = 1

  • 1 <= n <= 20

cpp

class Solution {
public:
    vector<string> generateBinaryStrings(int n) {
        // Your code goes here
    }
};

java

class Solution {
    public List<String> generateBinaryStrings(int n) {
        // Your code goes here
    }
}

python

class Solution:
    def generateBinaryStrings(self, n):
        # Your code goes here

javascript

class Solution {
    generateBinaryStrings(n) {
        // Your code goes here
    }
}

csharp

public class Solution
{
    public List<string> GenerateBinaryStrings(int n)
    {
        // Your code goes here
    }
}

go

func generateBinaryStrings(n int) []string {
Stuck? Show a way to structure it+
  1. 01Define output order and n=0 behavior
  2. 02Recurse with index and previous-bit state
  3. 03Always branch to 0, conditionally branch to 1
  4. 04Emit when the built string reaches length n

Reference answer

Then expect these follow-ups

  • How many such strings exist?

    Tests: follow-up reasoning

  • How would you count rather than generate them?

    Tests: follow-up reasoning

Free to read · better with Enzo

Practice this out loud with Enzo

Enzo runs it as a mock interview, pushes back with follow-ups, and grades you on the rubric.

Next question