​力扣解法汇总1016. 子串能表示从 1 到 N 数字的二进制串

news2024/12/22 14:13:41

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给定一个二进制字符串 s 和一个正整数 n,如果对于 [1, n] 范围内的每个整数,其二进制表示都是 s 的 子字符串 ,就返回 true,否则返回 false 

子字符串 是字符串中连续的字符序列。

示例 1:

输入:s = "0110", n = 3
输出:true

示例 2:

输入:s = "0110", n = 4
输出:false

提示:

  • 1 <= s.length <= 1000
  • s[i] 不是 '0' 就是 '1'
  • 1 <= n <= 109

解题思路:

* 这题的重点其实有两块:
* 1。如果n>2048,是一定会失败的。
* 2。如果[4,7]满足,那么[0,3]一定也是满足的,因为[4,7]去掉第一位的1,就是[0,3]。
* 如果我们要验证9的话,主要验证部分,[4,7][8,9],[4,7]的长度为3,[8,9]的长度为4。
* 所以我们去字符串中所有长度为3和4的,加入到set中,形成所有可能的组合。
* 然后验证4到9对应的字符串在set中是否存在即可。

代码:

public class Solution1016 {

    public boolean queryString(String s, int n) {
        int oldN = n;
        if (!s.contains("1")) {
            return false;
        }
        if (s.equals("1")) {
            return true;
        }
        if (n > (1 << 12)) {
            return false;
        }
        int k = 0;
        while (n > 0) {
            n = n >> 1;
            k++;
        }
        Set<String> set1 = new HashSet<>();
        for (int i = 0; i < s.length() - k + 2; i++) {
            set1.add(s.substring(i, i + k - 1));
            if (i == s.length() - k + 1) {
                break;
            }
            set1.add(s.substring(i, i + k));
        }
        int i = 1 << (k - 2);
        for (; i <= oldN; i++) {
            String string = Integer.toString(i, 2);
            if (!set1.contains(string)) {
                return false;
            }
        }
        return true;
    }


}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/514798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

x509证书-crl证书吊销

标准 CRL fields -- 版本、时间、证书序列号和扩展名 -- 都是在4.1节的ASN.1中定义的 -- AlgorithmIdentifier 在第 4.1.1.2 节中定义 以下各项描述了 X.509 v2 CRL 在 Internet PKI 中的使用。 关于签名值和验证 signatureValue 字段包含根据 ASN.1 DER 编码的 tbsCertList 计…

13-Vue技术栈之路由的使用

目录 1、路由相关理解1.1 vue-router 的理解1.2 对 SPA 应用的理解1.3 路由的理解1.4 路由分类 2、路由的基本使用2.1 实现效果&#xff1a;2.2 实现思路&#xff1a;2.3 实现步骤&#xff1a;2.4 具体代码2.5 几个注意点 3、多级路由&#xff08;嵌套路由&#xff09;4、路由的…

中科院学术专用版GPT Academic项目实现

【写在最前】要完成GPT 学术优化 (GPT Academic)这个项目需要一些值得注意的地方&#xff1a; chatGPT账户有余额且未过期&#xff01;&#xff01;&#xff01;有代理工具&#xff08;类似Clash&#xff09; 1、代码克隆 https://github.com/binary-husky/gpt_academic 根据…

Java后端调取微信小程序接口,创建微信小程序直播间

前提条件&#xff1a; 1.注册微信小程序 2.获取appId和secret秘钥 3.小程序具备直播权限 小程序直播开发文档网址 目录 1.创建和修改直播间 2.删除直播间 3.获取直播间分享二维码 1.创建和修改直播间 两个功能一起写&#xff0c;区别在于&#xff0c;修改的时候需要多一…

【数字化转型-05】数字化转型中战略驱动的利器——平衡计分卡

今年的4月19日&#xff0c; 华为第20届全球分析师大会上&#xff0c;华为孟晚舟在大会上发表了“初心如磐&#xff0c;奋楫笃行&#xff0c;共赢数字化未来”的主题演讲&#xff0c;其中分享了对数字化转型的三个核心洞见&#xff0c;首先&#xff0c;战略驱动是根本&#xff0…

Mojo:比 Python 快 35000 倍的 AI 编程语言

Mojo&#xff1a;比 Python 快 35000 倍的 AI 编程语言 Mojo是一门刚刚发布的面向 AI 开发人员的编程语言。 Mojo 被设计为 Python 的超集&#xff0c;所以如果你已经掌握了 Python&#xff0c;学习 Mojo 会很容易。关键是 Mojo 将 Python 的易用性与 C 语言的性能相结合&am…

AIGC—— 内容生产力革命的起点

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.AIGC 1.什么是AIGC? 2.AIGC有哪些优势与挑战 &#xff08;1&#xff0…

51单片机(十)DS1302实时时钟

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

Solon 框架,单月下载量突破100万了!!!

Solon 框架&#xff0c;单月下载量突破100万了。感谢开源的力量和社区的支持&#xff0c;我们同喜同荣&#xff01;&#xff01;&#xff01;目前&#xff0c;作为新成员加入了“可信开源共同体”&#xff0c;也积极参与中科院的“开源之夏”计划&#xff0c;也备受某军工服务商…

【C++入门】你知道C++为什么会有内联函数吗?

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

深度优先遍历和广度优先遍历

深度优先遍历和广度优先遍历 文章目录 深度优先遍历和广度优先遍历图图的实现遍历方式深度优先遍历基本思想广度优先遍历基本思想 完整代码 图 介绍&#xff1a;用于表示多对多的关系 图是一种数据结构&#xff0c;其中结点可以具有零个或多个相邻元素。两个结点之间的连接称…

FFmpeg AAC 解码 PCM

1. 概要与流程图 1.1 AAC 转 PCM,需要解码库来实现,目前了解有三种方式,当前使用的是 FFmpeg 库解码 1) faad 解码库网址:faadhttps://sourceforge.net/projects/faac/files/faad2-src/ 2) fdk-aac 编解码库网址: fdk-aac

接口测试入门:轻松掌握 ,让你的后端“心甘情愿”地配合你

目录 前言 简介 什么是API测试&#xff1f; API测试的必要性 API测试的类型 优势 API测试的挑战 【自动化测试工程师学习路线】 前言 在这篇文章中&#xff0c;我将带你轻松入门接口测试并掌握实用技巧&#xff0c;让你能够与后端开发人员更加顺畅地合作。相信我&…

【量化分析】用mplfinance显示交易图时,处理 Expect data.index as DatetimeIndex?

目录 一、说明 二、程序代码和出错描述 三、合理化建议 3.1 读入数据时指定索引 3.2 读入数据后&#xff0c;使用数据前指定日期&#xff08;时间戳&#xff09;索引 一、说明 我打算从比特币数据中获取烛台图。这是我在加载 csv 文件后选择我想要的数据框的代码。然而&…

【2】Kaggle:狗的种类识别,基于论文中的 VGG(11)/ResNet(18)/SENet 结构实现

1.数据集格式 在前面【1】中已经对数据集进行过了处理,在自己实现这一模块,训练数据集的统一格式为下图: 2.VGG11结构 根据论文Karen Simonyan, Andrew Zisserman. Very deep convolutional networks for large-scale image recognition. ICLR, 2015. (VGG) 中的结构,根…

如何在华为云服务器安装MindSpore框架

参考链接 一、获取安装命令 我是在华为云租了一个云服务器&#xff0c;然后系统是Ubuntu18.04,如果不知道自己的系统&#xff0c;可以通过以下方式&#xff1a; 第三方依赖安装方法 1.确认安装Ubuntu 18.04是64位操作系统 确认系统版本号&#xff0c;在终端输入lsb_release…

Linux -- 进阶 Web服务器 虚拟主机 --- 基于 IP 地址

虚拟主机 一个Web 服务器&#xff0c;如果只能运行一个网站的话&#xff0c;那么对于一些经费不是很足的小公司来说&#xff0c;那就 有些奢侈了&#xff0c;资源没有办法完全利用上 &#xff08; 无论是 内存&#xff0c;CPU&#xff0c;硬盘&#xff0c;带宽等等 &#xff0…

【网络常用命令汇总】ping和ipconfig命令、nslookup命令、netstat和tracert命令、route和arp命令详解(附图详解)

【写在前面】由于考试将近我也是临时抱个佛脚&#xff0c;之前对网络这块的概念真的只是停留在大学里面学的计算机网络&#xff0c;但是当时并没有接触这些实在的东西&#xff0c;也就只有工作后才会去想那么多&#xff0c;比如网络连通性ping一下就知道&#xff0c;其他的更不…

第07讲:Java High Level Client,读写 ES 利器

SkyWalking OAP 后端可以使用多种存储对数据进行持久化&#xff0c;例如 MySQL、TiDB 等&#xff0c;默认使用 ElasticSearch 作为持久化存储&#xff0c;在后面的源码分析过程中也将以 ElasticSearch 作为主要存储进行分析。 ElasticSearch 基本概念 本课时将快速介绍一下 E…

【类和对象完结篇】

目录 ❀初始化列表 构造函数体赋值 初始化列表 ❀explicit关键字 ❀static成员 什么是static成员&#xff1f; 特性 ❀友元 友元函数 友元类 ❀内部类 ❀理解类和对象 &#x1f340;​​​​​​​​​​​​​​小结&#x1f340; &#x1f389;博客主页&#xf…