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

LeetCode每日一题3211---生成不含相邻零的二进制字符串

一、题目描述

给你一个正整数 n

如果一个二进制字符串 x 的所有长度为 2
子字符串
中包含 至少 一个 “1”,则称 x 是一个 有效 字符串。

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

示例 1:

输入: n = 3

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

解释:

长度为 3 的有效字符串有:“010”、“011”、“101”、“110” 和 “111”。

二、解题思路

本题的目标就是找长度为n2进制数,其中不能有两个0相连

这里我才用最简单的解法 回溯法 但这道题目还有速度更快的解法,位运算

回溯法过程:

字符串的每个位置都需要填入 01。对于 0≤i<n,如果 i=0 或字符串的下标 i−1 处填入 1,则字符串的下标 i 处可以填入 01,否则字符串的下标 i 处只能填入 1

当得到一个长度为 n 的有效字符串时,我们可以判断这个字符串是否符合要求,如果符合要求则将该字符串添加到结果列表中。

三、代码

class Solution {   
public:
 // 判断字符串是否符合条件
    bool check(string s){
        int size = s.size();
        for(int i=0;i<size;i++){
            if(s[i]=='0'&&s[i+1]=='0'){
                return false;
            }
        }
        return true;
    }


    vector<string> validStrings(int n) {
        vector<string> res;
        string cur = "";
        backtrack(cur,n,0,res);
        return res;       
    }
    // 回溯法  
    void backtrack(string &cur,int n,int level,vector<string> &res){
        if(level> n){
            return;
        }

        if(level == n && check(cur)){
            res.push_back(cur);
            return;
        }

        cur.push_back('0');
        level++;
        backtrack(cur,n,level,res);
        cur.pop_back();
        cur.push_back('1');
        backtrack(cur,n,level,res);
        cur.pop_back();
        level--;

    }
};

http://www.kler.cn/a/370367.html

相关文章:

  • JS Clipboard API
  • Go-知识 版本演进
  • 芯片详细讲解,从而区分CPU、MPU、DSP、GPU、FPGA、MCU、SOC、ECU
  • ARM架构中如何判断stage 1 on/off
  • Centos7将/dev/mapper/centos-home磁盘空间转移到/dev/mapper/centos-root
  • 聚铭网络6款产品入选CCIA《网络安全专用产品指南》
  • Javascript数据结构——哈希表常见应用
  • Ubuntu 安装php7.3 nginx mysql
  • AVI格式怎么转MP4?码住这5个视频格式转换方法就足够了!
  • 深入解析HTTP与HTTPS的区别及实现原理
  • 【PyCharm配置Conda的虚拟环境】
  • 流媒体协议.之(RTP,RTCP,RTSP,RTMP,HTTP)(一)
  • ffmpeg视频滤镜: 裁剪-crop
  • RabbitMQ 消息处理问题全解
  • 穷举法的本质和特点
  • 【从零开始的LeetCode-算法】3127. 构造相同颜色的正方形
  • 解锁PDF权限密码
  • HarmonyOS开发5.0 net 启动界面设置
  • 《近似线性可分支持向量机的原理推导》KKT(Karush-Kuhn-Tucker)条件 公式解析
  • 回溯法 | 无限个for循环?
  • 炫酷的登录框!(附源码)
  • 2024年10月25日Github流行趋势
  • Java性能调优与垃圾回收机制(4/5)
  • Python爬虫系列(一)
  • ios 项目升级极光SDK
  • 从零开始:AI制作PPT工具大比拼