Skip to content

3211. Generate Binary Strings Without Adjacent Zeros

You are given a positive integer n.

A binary string x is valid if all

substrings

of x of length 2 contain at least one "1".

Return all valid strings with length n, in any order.

Example 1:

Input: n = 3

Output: ["010","011","101","110","111"]

Explanation:

The valid strings of length 3 are: "010", "011", "101", "110", and "111".

Example 2:

Input: n = 1

Output: ["0","1"]

Explanation:

The valid strings of length 1 are: "0" and "1".

Constraints:

  • 1 <= n <= 18

Solution:

class Solution {
    public List<String> validStrings(int n) {
        List<String> result = new ArrayList<String>();
        int index = 0;
        StringBuilder sb = new StringBuilder();
        helper(n, index, sb, result);
        return result;
    }

    private void helper(int n , int index, StringBuilder sb, List<String> result){
        if (index == n){
            result.add(sb.toString());
            return;
        }

        if (sb.length() == 0 || sb.charAt(sb.length() - 1) != '0'){
            sb.append("0");
            helper(n, index + 1, sb, result);
            sb.deleteCharAt(sb.length() - 1);
        }

        sb.append("1");
        helper(n, index + 1, sb, result);
        sb.deleteCharAt(sb.length() - 1);


    }


}