Description
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
Python3
class Solution:
def validStrings(self, n: int) -> List[str]:
res = []
def go(index, curr, prev):
if index == n:
nonlocal res
res.append(curr)
return
if prev is None:
go(index + 1, curr + "1", 1)
go(index + 1, curr + "0", 0)
else:
if prev == 0:
go(index + 1, curr + "1", 1)
else:
go(index + 1, curr + "1", 1)
go(index + 1, curr + "0", 0)
go(0, "", None)
return res