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

【Day20】LeetCode算法题【1784. 检查二进制字符串字段】【14. 最长公共前缀】

在这里插入图片描述

在这里插入图片描述

刷题打卡,第 二十 天

  • 题目一、1784. 检查二进制字符串字段
  • 题目二、14. 最长公共前缀


题目一、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✔刷题专栏✔
您的点赞收藏以及关注是对作者最大的鼓励喔 ~~

在这里插入图片描述

相关文章:

  • 状态反馈镇定之非线性系统反馈线性化
  • 【408计算机组成原理】—加减运算和溢出判断(八)
  • vue3 setup的四点注意
  • Python 输入与输出
  • 基于JAVA校园租赁系统的设计与实现计算机毕业设计源码+系统+数据库+lw文档+部署
  • 【Linux初阶】从0到1带你用云服务器搭建Linux环境
  • Kubernetes技术与架构-10
  • 基于微信小程序云开(统计学生信息并导出excel)3.0版
  • 【JAVAEE框架】浅谈 AOP 及代码实现
  • React获取DOM和获取组件实例的方式
  • [Spark、hadoop]spark Streaming的核心DStream
  • 【Vue】父子组件通信
  • API接口开发其实特简单,Python Flask Web 框架教程来了
  • SpringMVC03之拦截器和JSR303
  • 索引失效案例
  • [LeetCode] Wiggle Sort
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Android 控件背景颜色处理
  • angular学习第一篇-----环境搭建
  • If…else
  • Laravel5.4 Queues队列学习
  • PermissionScope Swift4 兼容问题
  • Python学习笔记 字符串拼接
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • swift基础之_对象 实例方法 对象方法。
  • 编写符合Python风格的对象
  • 翻译:Hystrix - How To Use
  • 理清楚Vue的结构
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 批量截取pdf文件
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 正则表达式
  • # 计算机视觉入门
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #NOIP 2014# day.1 T2 联合权值
  • #QT(TCP网络编程-服务端)
  • #Z0458. 树的中心2
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (5)STL算法之复制
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (独孤九剑)--文件系统
  • (汇总)os模块以及shutil模块对文件的操作
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)linux 命令大全
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net 怎么循环得到数组里的值_关于js数组
  • @RunWith注解作用
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ NOI 2001 ] 食物链