前言
每天和你一起刷 LeetCode 每日一题~
LeetCode 启动!
题目:生成不含相邻零的二进制字符串
代码与解题思路
今天的题目是一道经典的排列型深度优先搜索,学 dfs 路上的必做类型题。
题目描述写的很烂,不过题目本身非常清晰:"生成不含相邻零的二进制字符串",顾名思义,让我生成二级制字符串,但是不能含有相邻的 0
最常规的思路就是用 dfs 搜索所有可能出现的情况,代码如下:
go
func validStrings(n int) (ans []string) {
path := make([]byte, n)
var dfs func(int)
dfs = func(i int) {
if i == n {
ans = append(ans, string(path))
return
}
path[i] = '1' // 填 1
dfs(i+1)
if i == 0 || path[i-1] == '1' { // 不含相邻零的二进制字符串,上一个字符不能是 0
path[i] = '0' // 填 0
dfs(i+1)
}
}
dfs(0)
return ans
}
简单题简单讲,就不多聊些什么废话啦~
每天进步一点点,我们明天不见不散~
可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。