代码编织梦想

在这里插入图片描述

在这里插入图片描述


题目一、1784. 检查二进制字符串字段

原题链接:1784. 检查二进制字符串字段

题目描述

给你一个二进制字符串 s ,该字符串 不含前导零
如果s 包含 零个或一个由连续的 '1'组成的字段 ,返回 true​​​ 。否则,返回 false
如果 s由连续若干个 '1' 组成的字段 数量不超过 1,返回 true​​​ 。否则,返回 false
/
示例 1:
输入:s = “1001”
输出:false
解释:由连续若干个 ‘1’ 组成的字段数量为 2,返回 false
/
示例 2:
输入:s = “110”
输出:true

解题思路
根据题目的要求,我们可以首先将比较特别的情况给处理掉:
当二进制字符串s全部由’1‘或全部由’0‘组成,都满足要求,可以直接返回true。

接下来就是比较棘手的问题了,我们需要确定,字符串中包含一个由连续的 '1'组成的字段,这里面的难点就是,连续若干个 '1' 组成的字段 数量不可以超过 1

为了得到二进制字符串s中,由连续若干个 '1' 组成的字段的数量,我们需要使用滑动窗口的思想,同时还需要获取字符串中字符’1‘的个数来充当辅助。

为什么要这么做呢…我们来讲述一下规律吧:

使用一个长度为2的滑动窗口来遍历字符串,当滑动窗口中的字符串为“11”的时候,就记录下来:
滑动窗口“11”出现的总数用pair表示;

我们还需要遍历字符串的每个字符,记录当中字符’1‘出现的次数:
二进制字符串中“1”的总数,用n来表示;

由连续若干个 ‘1’ 组成的字段的数量等于1时:n - pair = 1;
由连续若干个 ‘1’ 组成的字段的数量等于2时:n - pair = 2;
由连续若干个 ‘1’ 组成的字段的数量等于3时:n - pair = 3;

由连续若干个 ‘1’ 组成的字段的数量等于k时:n - pair = k;

遍历完二进制字符串 s , 只有n - pair = 1时,我们返回true

提交代码

class Solution {
    public boolean checkOnesSegment(String s) {
        //如果字符串中不出现‘1’或不出现‘0’,返回true
        //因为字符串包含 零个或一个由连续的 '1' 组成的字段
        //且由连续若干个 '1' 组成的字段 数量不超过 1
        if(!s.contains("1") || !s.contains("0")) return true;

        //获取二进制字段的长度
        int n = s.length();
        //记录由连续的 '1' 组成的字段 的数量
        int sum = 0;

        for(int i = 0;i < n;++i){  //遍历二进制字段
            char a = s.charAt(i);  
            if(a == '1')           //遍历到'1'
            ++sum;                 //记录其出现的次数
            if(i+1 < n){           //若长度为2的滑动窗口中是"11",
                if(a == '1' && s.charAt(i+1) == '1')
                --sum;             //记录-1
            }
        }
        //由连续若干个 '1' 组成的字段 数量为 1,返回true,否则返回false
        return sum == 1;          
        
    }
}

提交结果

执行速度击败百分百,哈哈。
在这里插入图片描述


题目二、14. 最长公共前缀

原题链接:14. 最长公共前缀

题目描述

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
/
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:“”
解释:输入不存在公共前缀。

解题思路
题目要求返回字符串数组中元素的最长公共前缀,那么我们可以将每一个字符串元素的相同位置字符进行比较:

全部相同则继续向后比较。
字符串相同位置的字符不等,返回最长公共前缀,即前面遍历过的字符串字符。
当某个字符串元素被完全遍历完,说明它就是最长公共前缀。

按照上述思路,问题就解决了。

提交代码

class Solution {
    public String longestCommonPrefix(String[] strs) {
        int n = strs.length;   //获取字符串数组长度
        if(strs == null || n == 0) return "";//为空或没有元素,返回空字符串
 
        int count = strs[0].length();        //获取首字符串元素的长度

        for(int i = 0;i < count;++i){        //遍历字符串数组
            char c = strs[0].charAt(i);      //记录首字符串元素的各个字符
            for(int j = 1;j < n;++j){        //遍历各字符串元素相同位置的字符
            //当遇到不相同额字符 或 某个字符串元素被遍历完
                if(i == strs[j].length() || strs[j].charAt(i) != c)
                //返回当前长度的公共前缀
                    return strs[0].substring(0, i);        
            }
        }

        return strs[0];//如果元素长度为1,直接返回
    }
}


提交结果

在这里插入图片描述



求关注⚽ 作者🥇 .29. 🥇 的✔博客主页✔
来刷题⚽ 记录每日LeetCode✔刷题专栏✔
您的点赞收藏以及关注是对作者最大的鼓励喔 ~~

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ebb29bbe/article/details/127157457

「吐血整理」再来一打Webpack面试题-爱代码爱编程

这是前端食堂的第22篇原创  「观感度:????????????????????」 「口味:清蒸鲈鱼」 「烹饪时间:15min」 从头发的浓密程度和干练的走路姿势我察觉到,面前坐着的这位面试官也是一把好手。我像以往一样,准备花3分钟的时间进行自我介绍。在此期间,我的目光被16寸的MacBook Pro所吸引,这次的自我介绍我做足了准备,很有信

java面试题文档(QA)-爱代码爱编程

– 基础篇 1、 Java语言有哪些特点2、面向对象和面向过程的区别3 、八种基本数据类型的大小,以及他们的封装类4、标识符的命名规则。5、instanceof 关键字的作用6、Java自动装箱与拆箱7、 重载和重写的区别8、 equals与==的区别9、 Hashcode的作用10、String、String StringBuffer 和 S

java面试.1-爱代码爱编程

关注公众号『Java专栏』,发送『面试』 获取该项目完整PDF [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WM1UgjaX-1589530428920)(qr_code.jpg)] 基础篇 1、 Java语言有哪些特点2、面向对象和面向过程的区别3 、八种基本数据类型的大小,以及他们的封装类4、标识符的命名规则

LeetCode字符串高频题目整理(持续更新中)-爱代码爱编程

刷题是应届生找工作不可缺少的部分,一种公认的刷题策略是按类别刷题,可是每个类别也有许多题,在有限的时间里到底该刷哪些题呢?个人根据LeetCode官方给出的每个题目的出现频率,整理并收录了每个类别里高频出现的题目,对于官方统计频率太低的题目,不予收录。 文章目录 栈实现20. 有效的括号(0.412)22. 括号生成1003. 检查替换

一文掌握GO语言实战技能(一) - 万字长文-爱代码爱编程

GO 基本介绍GO 基本概念GO 语言特性GO 程序的基本结构GO 标识符 关键字 变量 常量GO 数据类型GO 操作符 与 日期GO 流程控制GO 函数介绍GO 闭包的介绍Go 基本介绍 Go 语言诞生于谷歌,由计算机领域的三位宗师级大牛 Rob Pike、Ken Thompson 和 Robert Griesemer 写成。由于出身名门,Go

MySQl知识点梳理以及常见的Sql题总结-爱代码爱编程

MySQl知识点梳理以及常见的Sql题总结 文章目录 MySQl知识点梳理以及常见的Sql题总结MySQL基本语法回顾SQL的语言分类DDL:数据库定义语言(主要对数据库,以及数据库的表进行创建,删除)DDL操作数据库DDL操作表DCL:数据库操纵语言(控制数据库访问权限)DML:数据库操作语言(主要是对表中数据进行增,删,改)举例:insert

AcWing 算法基础课学习记录(Python,备战蓝桥杯)Day1 - Day30-爱代码爱编程

 备战蓝桥杯学习路线:AcWing算法基础课->AcWing蓝桥杯课 (由于基础课和蓝桥课一共有85小时,现在每天平均是30mins到45mins,可能不是很够。从明天开始,每天看视频讲解一小时并且要消化内容,估计一起得花3-4小时。这样子差不多一月底,二月初可以结束视频课程) Day1.(2021.10.12) #Python input是输

校招总结--建议全文背诵-爱代码爱编程

Python基础 1、Python判断对象是否相等(== 和 is) Python中的对象包含三个基本要素,分别是:id:用来唯一标识一个对象,可以理解为内存地址;type:标识对象的类型;value:对象的值; == :比较两个对象的内容是否相等,即两个对象的 value 是否相等,无论 id 是否相等,默认会调用对象的 eq()方法。is: 比较