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

news/2024/7/5 2:03:50

 目录链接:

力扣编程题-解法汇总_分享+记录-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://lihuaxi.xjx100.cn/news/1121344.html

相关文章

studioone6离线下载电脑版

随着技术的不断进步&#xff0c;音乐家不再将作曲编曲局限在手绘和实体乐器演奏上&#xff0c;各类编曲软件和插件在模拟乐器中无限接近实质&#xff0c;大大简化了编曲作曲的工作。 Studio One6就是其中的佼佼者之一&#xff0c;它不仅支持用户对音频进行剪切编辑混音等后期处…

Python小姿势 - # 如何使用Python爬取网页数据

如何使用Python爬取网页数据 今天我们来学习一下如何使用Python来爬取网页数据。 首先&#xff0c;我们需要准备一个空白的文件&#xff0c;在文件中输入以下代码&#xff1a; import requests url http://www.baidu.com r requests.get(url) print(r.text) 上面的代码中&…

x509证书-crl证书吊销

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

人工智能AI在各个场景中的应用以及营销策略

当今&#xff0c;大数据已经成为各个行业的生命线&#xff0c;而人工智能AI正是一款依托于大数据技术的先进工具&#xff0c;通过强大的数据收集、分析和挖掘能力&#xff0c;在各种应用场景中发挥着举足轻重的作用。 一、人工智能AI的概述 首先&#xff0c;我们来了解一下人…

【AI】YOLOv7部署在NVIDIA Jetson TX2上

1、硬件平台 1.1 MCU Micro controller Unit, 微处理器 在单片机上也能跑的AI算法,好神奇啊,比如MCUNet 1.2 CPU Central Processing Unit,中央处理器 一般的框架都有CPU版本,当然速度会慢一些,在x86电脑上勉强能用,在嵌入式ARM板上几乎无法使用 1.3 GPU Graphics…

穿越数据智能“海峡”,企业更需要什么样的数智底座?

导读&#xff1a;更懂业务&#xff0c;是用友iuap数智中台多年打磨的核心能力。 如果将数智化转型比作企业的大航海旅程&#xff0c;数据和智能就像是大航海过程中企业必须穿越的海峡。随着数智化转型的不断深入&#xff0c;很多企业驶进数据智能海峡后发现&#xff0c;要用好数…

红队常用命令

原文链接 https://github.com/safe6Sec/command command 收集渗透中会用到的常用命令 。 建议直接[Ctrl+F]查找 java命令执行 如下编码网站: https://ares-x.com/tools/runtime-exec/ https://r0yanx.com/tools/java_exec_encode/ https://www.bugku.net/runtime-exec-pa…

SQL全方位攻略:4. 标准SQL和SQL“方言”

系列文章目录 SQL全方位攻略&#xff1a;1.数据库介绍 SQL全方位攻略&#xff1a;2.SQL介绍 SQL全方位攻略&#xff1a;3.SQL标准 SQL全方位攻略&#xff1a;4. 标准SQL和SQL“方言” 文章目录 系列文章目录4. 标准SQL和SQL“方言”标准SQL和SQL“方言”的介绍常见的SQL“方言…