当前位置: 首页 > news >正文

【每日题解】3211. 生成不含相邻零的二进制字符串

给你一个正整数 n

如果一个二进制字符串 x 的所有长度为 2 的

子字符串

中包含 至少 一个 "1",则称 x 是一个 有效 字符串。

返回所有长度为 n 的 有效 字符串,可以以任意顺序排列。

示例 1:

输入: n = 3

输出: ["010","011","101","110","111"]

解释:

长度为 3 的有效字符串有:"010""011""101""110" 和 "111"

示例 2:

输入: n = 1

输出: ["0","1"]

解释:

长度为 1 的有效字符串有:"0" 和 "1"

思路

  • 如果我们有长度为 x 的字符串,根据二进制的规则,我们就能够生成长度为 x+1 的字符串(递归调用)
  • 如果当前字符串以 0 结尾,我们只能向后补 1,否则出现 00,如果以 1 结尾,则可以补 0 或 1。

因此我们可以采用递归的思想,从长度为 1 的字符串开始生成,按照上面的逻辑生成全部长度为 n 的可能结果。

代码(C++)

class Solution {
public:vector<string> validStrings(int n) {vector<string> result;for (char start : {'0', '1'}) {backtrack(string(1, start), n, result);}return result;}void backtrack(string current, int n, vector<string>& result) {if (current.length() == n) {result.push_back(current);return;}if (current.back() == '0') {backtrack(current + '1', n, result);} else {backtrack(current + '0', n, result);backtrack(current + '1', n, result);}}
};

 代码(C++ 用队列逐层生成字符串)

class Solution {
public:vector<string> validStrings(int n) {vector<string> result;queue<string> q;q.push("0");q.push("1");while (!q.empty()) {string current = q.front();q.pop();if (current.length() == n) {result.push_back(current);continue;}if (current.back() == '0') {q.push(current + '1');} else {q.push(current + '1');q.push(current + '0');}}return result;}
};

代码(Python)

class Solution:def validStrings(self, n: int) -> List[str]:def backtrack(current):if len(current) == n:result.append(current)returnif current[-1] == '0':backtrack(current + '1')else:backtrack(current + '0')backtrack(current + '1')result = []for start in ['0', '1']:backtrack(start)return result

相关文章:

【每日题解】3211. 生成不含相邻零的二进制字符串

给你一个正整数 n。 如果一个二进制字符串 x 的所有长度为 2 的 子字符串 中包含 至少 一个 "1"&#xff0c;则称 x 是一个 有效 字符串。 返回所有长度为 n 的 有效 字符串&#xff0c;可以以任意顺序排列。 示例 1&#xff1a; 输入&#xff1a; n 3 输出&a…...

Nginx、Tomcat等项目部署问题及解决方案详解

目录 前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的常见原因 2. 端口开启问题2.1 Windows环境下的端口开放2.2 Linux环境下的端口开放 3. 重视日志分析3.1 Nginx日志分析3.2 Tomcat日志分析 4. 开发环境与部署后运行结果不同4.1 开发环境与生产…...

【PythonWeb开发】Flask-RESTful参数解析

flask-restful中的reqparse.RequestParser是一个用于解析和验证参数的工具。它可以帮助开发者从请求中提取参数&#xff0c;并确保这些参数符合预期的格式和类型。参数解析的意思就是规范化传入的参数并获取到这些参数。 一、什么是 reqparse.RequestParser&#xff1f; reqpa…...

gcc与mingw64版本介绍

三类编译器 GCC&#xff0c;全称为GNU Compiler Collection&#xff0c;是一个强大的编译器集合&#xff0c;它不仅支持C和C语言&#xff0c;还支持Fortran、Ada、Java等多种编程语言的编译。在GCC工具链中&#xff0c;gcc和g是两个核心的编译器工具。gcc是专门用于编译C语言程…...

CSS3新增长度单位

CSS3新增长度单位 rem&#xff1a;根元素字体的倍数&#xff0c;只与根元素字体大小有关&#xff1b;vw&#xff1a;占视口宽度的百分比&#xff1b;vh&#xff1a;占视口高度的百分比&#xff1b;vmax&#xff1a;占视口中宽和高最大的百分比&#xff1b;vmin&#xff1a;占视…...

【Spring】创建Spring项目前的配置工作

&#x1f94a;作者&#xff1a;一只爱打拳的程序猿&#xff0c;Java领域新星创作者&#xff0c;CSDN、阿里云社区优质创作者。 &#x1f93c;文章收录于&#xff1a;Spring 目录 1.下载Spring Initializr 2.配置Spring国内源 3.添加Spring框架的支持(pom.xml) 4.刷新Maven仓…...

docker 安装部署 nginx

命令 docker run \ -p 15008:80 \ --name nginx1.21.6 \ -v /iepms/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /iepms/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /iepms/nginx/log:/var/log/nginx \ -v /iepms/nginx/html:/usr/share/nginx/html \ -d 192.168.1.103…...

黑马数据库学习笔记

课程地址 &#xff08;基础篇&#xff09;MySQL的启动 mysql 默认使用 3306 端口 在 centos下&#xff0c;启动 mysql 数据库&#xff1a;service mysqld start; 查看状态/启动/停止/重启&#xff1a;systemctl status/start/stop/restart mysqld; 登录到mysql数据库&…...

MYSQL-SQL-03-DQL(Data Query Language,数据查询语言)(单表查询)

DQL&#xff08;数据查询语言&#xff09; DQL英文全称是Data Query Language(数据查询语言)&#xff0c;数据查询语言&#xff0c;用来查询数据库中表的记录。 查询关键字: SELECT 在一个正常的业务系统中&#xff0c;查询操作的频次是要远高于增删改的&#xff0c;当我们去访…...

【数据结构和算法】三、动态规划原理讲解与实战演练

目录 1、什么是动态规划&#xff1f; 2、动态规划实战演练 2.1 力扣题之爬楼梯问题 &#xff08;1&#xff09;解题思路1: &#xff08;2&#xff09;解题思路2: &#xff08;3&#xff09;动态规划&#xff08;DP&#xff09;&#xff1a;解题思路 &#xff08;4&#x…...

交叉编译 perl-5.40.0(riscv64)

交叉编译 perl-5.40.0&#xff08;riscv64&#xff09; https://arsv.github.io/perl-cross/usage.html https://github.com/arsv/perl-cross 借助 perl-cross 进行交叉编译 https://www.perl.org/get.html#unix_like 这里获取 perl-5.40.0 的源码 https://github.com/arsv/pe…...

Leetcode 搜索旋转排序数组

这段代码是用于解决LeetCode第33题“搜索旋转排序数组”的Java解法。以下是对该算法思想的中文解释&#xff1a; 算法思想 二分查找的基本思路&#xff1a; 由于数组是部分有序的&#xff08;被旋转过&#xff09;&#xff0c;我们可以利用二分查找的思想&#xff0c;逐步缩小…...

Spring Task—定时任务

Spring Task 是 Spring 提供的一种轻量级定时任务调度功能&#xff0c;内置在 Spring 框架中。与 Quartz 等重量级调度框架相比&#xff0c;Spring Task 使用简便&#xff0c;无需额外依赖&#xff0c;适合在简单的调度任务场景中使用。通过注解配置方式&#xff0c;开发者可以…...

Spring Boot 应用开发概述

目录 Spring Boot 应用开发概述 Spring Boot 的核心特性 Spring Boot 的开发模式 Spring Boot 在企业应用开发中的优势 结论 Spring Boot 应用开发概述 Spring Boot 是由 Pivotal 团队开发的一个框架&#xff0c;基于 Spring 框架&#xff0c;旨在简化和加速基于 Spring …...

Chrome谷歌浏览器加载ActiveX控件之allWebDesktop控件介绍

背景 allWebDesktop控件是一款方便用户在线打开各类文档的OA办公控件。它设计比较轻巧&#xff0c;充分利用计算机程序资源打开文档&#xff0c;并将程序窗口嵌入到allWebDesktop控件区域内&#xff0c;从而实现浏览器内打开各类文档效果。 allWebPlugin中间件是一款为用户提供…...

GitHub Star 数量前 5 的开源应用程序生成器

欢迎来的 GitHub Star 数量排名系列文章的第 7 篇——最受欢迎的应用程序生成器。 之前我们已经详细探讨过&#xff1a;在 GitHub 上最受欢迎的——无代码工具、低代码项目、内部工具、CRUD项目、自部署项目和 Airtable 开源替代品。累计超过 50 个优质项目&#xff01;&#…...

DBC文件当中新建CANFD等类型的报文

同学最近有添加CANFD报文的需求&#xff0c;需要用到CANFD类型报文的DBC文件&#xff0c;这下就难住我了&#xff0c;我之前用的DBC文件只有“CAN Standard”“CAN Extended”两种类型&#xff0c;压根没见过FD的。 后来他找到了项目之前的DBC&#xff0c;打开来看&#xff0c…...

基于SpringBoot的房地产销售管理系统【附源码】

基于SpringBoot的房地产销售管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1用户登录功能的详细实现 4.2管理员权限的功能实现 4.2.1客户信息管理功能的详细实现 4.2.2房产管理功能的详细实现 4.2.3预约看房功能的详细实现 4.2.4论…...

圆点虚线 Android

参考 https://blog.csdn.net/l_o_s/article/details/73550876 <com.xxx.wwww.weight.PointDividerViewandroid:layout_width"match_parent"android:layout_height"wrap_content"app:PDbackgroundColor"color/white"app:dotColor"color/…...

贵州鑫宏远农业-始终致力于推动现代农业的科技创新与发展

贵州鑫宏远农业科技有限公司&#xff0c;是一家在高科技农业领域深耕细作、锐意进取的企业。自成立以来&#xff0c;我们始终致力于推动现代农业的科技创新与发展&#xff0c;业务全面覆盖农业科学研发、组织培养生产、专业育苗培植、半成品及成品精细化养护、市场销售以及全方…...

vLLM-v0.17.1应用场景:智能硬件语音助手离线LLM推理部署

vLLM-v0.17.1应用场景&#xff1a;智能硬件语音助手离线LLM推理部署 1. 技术背景与需求分析 智能硬件语音助手正在经历从云端依赖向本地化处理的转变。传统方案面临三大痛点&#xff1a; 网络延迟问题&#xff1a;云端API调用导致响应速度受限隐私安全顾虑&#xff1a;用户对…...

小白也能懂:Qwen3-TTS-Tokenizer-12Hz的API调用与Python示例

小白也能懂&#xff1a;Qwen3-TTS-Tokenizer-12Hz的API调用与Python示例 1. 前言&#xff1a;音频编解码器能做什么&#xff1f; 想象一下&#xff0c;你录制了一段重要的会议录音&#xff0c;文件大小有50MB&#xff0c;想通过微信发给同事&#xff0c;却发现超过了文件大小…...

基于设备树与内核中断的125KHZ RFID曼彻斯特码实时解码实践

1. 曼彻斯特码解码原理详解 125KHz RFID系统广泛用于门禁、物流追踪等场景&#xff0c;其数据传输采用曼彻斯特编码方式。这种编码最大的特点是每个数据位都包含电平跳变&#xff0c;使得时钟恢复变得简单。具体来说&#xff0c;EM4100卡片每传送一位数据需要64个载波周期&…...

【紧急预警】CPython 3.12升级后,3款主流内存工具失效!2024最稳选型组合(含兼容性补丁与迁移路径)

第一章&#xff1a;Python 内存检测工具选型的底层逻辑与演进脉络Python 内存管理机制以引用计数为核心&#xff0c;辅以循环垃圾回收器&#xff08;GC&#xff09;和内存池&#xff08;pymalloc&#xff09;&#xff0c;这决定了内存问题往往隐匿于对象生命周期、引用链异常或…...

终极Windows远程桌面多用户破解指南:让家庭版也能同时登录15人!

终极Windows远程桌面多用户破解指南&#xff1a;让家庭版也能同时登录15人&#xff01; 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows家庭版只能一个人远程连接而烦恼吗&#xff1f;&#x1f914; …...

5大场景解锁智能群管理:如何让LuckyLilliaBot提升社群运营效率80%

5大场景解锁智能群管理&#xff1a;如何让LuckyLilliaBot提升社群运营效率80% 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot LuckyLilliaBot作为一款基于OneBot11协议的NTQQ插件&#xff0c;能够将…...

Windows右键菜单终极管理指南:ContextMenuManager完全掌控你的系统交互体验

Windows右键菜单终极管理指南&#xff1a;ContextMenuManager完全掌控你的系统交互体验 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单管理一直…...

基于 Kinova Gen3 机械臂的家庭人机交互安全算法研究

随着服务机器人逐步进入家庭场景&#xff0c;人机交互&#xff08;HRI&#xff09;的安全性成为影响机器人普及的关键因素。相较于工业环境&#xff0c;家庭空间布局多变、人员活动随机&#xff0c;对机械臂的感知、规划与控制提出了更高要求。本文以7自由度Kinova Gen3机械臂为…...

你的加密音乐文件,是否真的属于你?

你的加密音乐文件&#xff0c;是否真的属于你&#xff1f; 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: https://gitc…...

建行江门市分行:量身定制金融策 陈皮产业绽新姿

“前期承包土地、购买柑苗已投入大量资金&#xff0c;后续还要设法购买化肥。”眼看资金接续不上&#xff0c;前期投入面临打水漂&#xff0c;流动资金短缺让江门新会某陈皮庄园负责人老李一筹莫展。 获悉老李困境后&#xff0c;建行广东江门分行网点客户经理驱车前往果园实地走…...