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

LeetCode刷题--思路总结记录

23-11-08每日一题:2609.最长平衡子字符串

  • 链接:2609.最长平衡子字符串

  • 总体思路:

    • 平衡字符串要求“字符串前半段的0和后半段的1个数相同” ==> 分别记录0和1的计数结果,并最终取二者的最小值×2
    • 字符串必须0开头,1结束 ==> 忽略s一开头的1
    • 一个字符串记录后,怎么从上个字符串结尾的1,切换到下个字符串开头的0?
  • 按普通样例“0100111”走==> 碰到’0’就给count0++,碰到‘1’就给count1++ ==> 当碰到0前面有1,就刷新一次res,并重计算count0和count1

    • ① 由于可能字符串1开头,得忽略 ==> 故“ 碰到‘1’就给count1++”就得修改成,碰到‘1’且count0≠0时
    • ② 若刷新的条件是以“碰到0前面有1”的角度,那么对于“01000111”最大的平衡字符串中“000111”之后没有0作结尾,就没法更新结果了(即只有当“0001110”时才能更新出正确答案),或者更新结果得比较繁琐 ==> 于是思考刷新的条件应修改为“1后面是0” ==> 同时由于1可能是大字符串最后一个字符,所以得并上“i+1==s.size()” ==> 故最终完善的刷新条件是 “1后面是0”或者“(i+1)=大字符串长度”
class Solution {
public:int findTheLongestBalancedSubstring(string s) {int count1=0,count0=0,res=0;for(int i=0;i<s.size();i++){if(s[i]=='0') {count0++;// cout<<' '<<i<<' '<<count1<<' '<<count0<<'\n';}else if( (count0!=0) & s[i]=='1' ){ // ①count1++;// cout<<' '<<i<<' '<<count1<<' '<<count0<<'\n';if(s[i+1]=='0'||(i+1)==s.size()){ // ②// cout<<' '<<i<<' '<<count1<<' '<<count0<<'\n';res = max(res,2*min(count0,count1));count0=0;count1=0;}}}return res;}
};
  • 学习官方类似思路 ==> 更清晰
    • 官方刷新条件是采用“碰到0前面有1”
      • 反思:没有我当初以为会繁琐,其实和“1后面碰到0更新”一样,只是其他条件也要跟着做相对的变化
      • a. 将上方中的“(i+1)=大字符串长度”,考虑作“i为0”即可;
      • b. 将s[i] == '1'作为if最初层的条件就好
    • n=s.size():把将s.size()提前提出,会快一点,不然for循环里每次都得算一遍,就慢
    • ② 每碰到“1”就更新一下res,这样即使“1”在大字符串末尾,也不担心会因为没满足“碰到0前面有1” 这个刷新条件,而错过刷新了
    • ③ 切换子字符串 – 单独拎出刷新count0和count1的情况:走到这步的前提是s[i]='0',所以else if(i==0 || s[i-1]=='1') 表明的是
      • a. 要么s[i]='0' & i==0:'0’作为大字符串开头
      • b. 要么s[i]='0' & s[i-1]=='1':'0’作为新子字符串开头
    • 比较自己和官方的思路:
      • 我是在切换子字符(即刷新count0和count1)时,一起更新结果 ==> 需要多考虑1在末尾的情况,而且期间有把自己绕晕的倾向
      • 官方思路是每次有1时,更新结果 ==> 无需考虑1在末尾的情况,但切换子字符串的逻辑要单独拎出来
class Solution {
public:int findTheLongestBalancedSubstring(string s) {int count0=0,count1=0,res=0,n=s.size()//①for(int i=0;i<n;i++){if(s[i]=='1'){count1++;res = max(res,2*min(count0,count1));//②}else if(i==0 || s[i-1]=='1') //③走到这步隐含说明s[i]='0'{   count0 = 1;count1 = 0;}else{//碰到0就计数+1count0++;}}return res;}
};

相关文章:

LeetCode刷题--思路总结记录

23-11-08每日一题&#xff1a;2609.最长平衡子字符串 链接&#xff1a;2609.最长平衡子字符串 总体思路&#xff1a; 平衡字符串要求“字符串前半段的0和后半段的1个数相同” > 分别记录0和1的计数结果&#xff0c;并最终取二者的最小值2字符串必须0开头&#xff0c;1结束 …...

Nodejs

node是运行js的环境 node 基础命令 // 初始化 // npm init // npm init -y// 全部选择yes // 安装包 // npm install 包名 // npm i// 安装package-lock.json里面所有的包到node_modules // npm i 包名// 安装当前最新版&#xff0c; // npm i 包名版本号//指定版本安装 // n…...

【面经】spring,springboot,springcloud有什么区别和联系

Spring、SpringBoot、SpringCloud都是Java开发中的重要框架&#xff0c;它们的作用和区别如下&#xff1a; Spring&#xff1a;是一个轻量级的开源框架&#xff0c;是为解决企业应用开发的复杂性而创建的。它提供了AOP&#xff08;面向切面编程&#xff09;和Ioc&#xff08;控…...

SpringBoot Kafka消费者 多kafka配置

一、配置文件 xxxxxx:kafka:bootstrap-servers: xx.xx.xx.xx:9092,xx.xx.xx.xx:9092consumer:poll-timeout: 3000key-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.apache.kafka.common.serialization.StringDeserializer…...

git 标签相关命令

要在本地仓库中添加标签&#xff0c;你可以使用以下命令&#xff1a; git tag <tag_name> 这将在当前所处的提交上创建一个轻量级标签&#xff08;lightweight tag&#xff09;。如果你想要创建一个带有附注信息的标签&#xff0c;可以使用 -a 选项&#xff1a; git t…...

我在Vscode学OpenCV 图像运算(权重、逻辑运算、掩码、位分解、数字水印)

文章目录 权重 _ 要求两幅图像是相同大小的。[ 1 ] 以数据说话&#xff08; 1&#xff09; 最终&#xff1a;&#xff08; 2 &#xff09;gamma _输出图像的标量值 [ 2 ] 图像的展现力gamma并不等同于增加曝光度&#xff08; 1 &#xff09;gamma100&#xff08; 2 &#xff09…...

【 Docker: 数据卷挂载】

背景 Docker只提供了容器运行的必备依赖&#xff0c;但是一些编辑等操作的依赖是不支持的&#xff0c;如vi操作容器内部文件、将静态资源拷贝到容器内来等。 docker pull nginx docker run -d -p 81:80 --namemynginx -v D:/docker/nginx/www:/usr/share/nginx/www -v D:/dock…...

windows上的静态链接和动态链接的区别与作用(笔记)

C源代码文件经过预编译、编译和汇编后输出的目标文件的后缀和操作系统是有关系的。不同的操作系统使用不同的命名约定和文件格式来表示目标文件。常见的目标文件后缀包括&#xff1a; - Windows系统&#xff1a;.obj、.lib、.dll - Linux系统&#xff1a;.o、.a、.so - macOS系…...

MySQL和Postgresql数据库备份和恢复

MySQL和Postgresql数据库备份和恢复 一、MySQL数据库备份 备份单个数据库 $ mysqldump -uroot -p bdname > dbname.sql备份多个数据库 $ mysqldump -uroot -p --databases dbname1 dbname2 ... > dbname.sql # 备份所有数据库 $ mysqldump -uroot -p --all-databases…...

使用MCU上的I2C总线进行传感器应用

使用MCU上的I2C总线进行传感器应用是嵌入式系统开发中常见的任务&#xff0c;本文将介绍在MCU上实现I2C总线传感器应用的相关技术和流程。 首先&#xff0c;I2C&#xff08;Inter-Integrated Circuit&#xff09;总线是一种常用的串行通信协议&#xff0c;用于连接多个设备&am…...

汽车标定技术(七)--基于模型开发如何生成完整的A2L文件(2)

目录 1. 自定义ASAP2文件 2. asap2userlib.tlc需要修改的部分 3. 标定量观测量地址替换 3.1 由elf文件替换 3.2 由map文件替换 3.3 正则表达式&#xff08;含asap2post.m修改方法&#xff09; 4.小结 书接上文汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)-C…...

ZZ308 物联网应用与服务赛题第E套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;E卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用的…...

web相关框架

web相关框架 web 后端开发框架 expressKoaHapiNest web 前端UI库&#xff08;组件库&#xff09; Naive-UiAnt Design VueElement plus 后端页面&#xff0c;前端框架(一个开箱即用前端框架) naive-ui-admingin-vue-adminvue-vben-adminvue-pure-adminvue3-antd-admin 无…...

安装dubbo-admin报错node版本和test错误

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a;dubbo-admin安装 &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#xff0c;你不上台&#xff0…...

HTML使用canvas绘制海报(网络图片)

生成前&#xff1a; 生成后&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>媒体参会嘉宾邀请函生成链接</title><link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/vant2.10…...

20道高频JavaScript面试题快问快答

※其他的快问快答&#xff0c;看这里&#xff01; 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过…...

【STM32】HAL库UART含校验位的串口通信配置BUG避坑

【STM32】HAL库UART含校验位的串口通信配置BUG避坑 文章目录 UART协议校验位HAL库配置含校验位的串口配置BUG避坑附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作位带代码位带宏定义总线函…...

Python实用技巧:将 Excel转为PDF

将Excel文件转换为PDF可以方便储存表格数据&#xff0c;此外在打印或共享文档时也能确保表格样式布局等在不同设备和操作系统上保持一致。今天给大家分享一个使用第三方Python库Spire.XLS for Python 实现Excel转PDF的简单方法。 实现步骤 首先&#xff0c;通过pip命令来安装依…...

【面经】讲一下你对jvm和jmm的了解

JVM JVM是Java虚拟机&#xff0c;是Java程序的执行环境。它是一种虚拟的计算机&#xff0c;通过在实际的计算机上仿真模拟各种计算机功能来实现. JVM是Java程序运行的核心&#xff0c;可以将Java字节码转换为可执行的机器码&#xff0c;提供了跨平台性、优秀的垃圾回收器&…...

《网络协议》03. 传输层(TCP UDP)

title: 《网络协议》03. 传输层&#xff08;TCP & UDP&#xff09; date: 2022-09-04 22:37:11 updated: 2023-11-08 15:58:52 categories: 学习记录&#xff1a;网络协议 excerpt: 传输层、UDP、TCP&#xff08;可靠传输&#xff0c;流量控制&#xff0c;拥塞控制&#xf…...

Cursor智能体开发:Canvases简介

Canvases 让 Cursor 创建在聊天侧边显示的交互式产出物。无需在冗长的 markdown 表格或代码块里来回滚动&#xff0c;你会看到一个独立视图&#xff0c;按分区、统计信息和表格组织展示&#xff0c;并且可以重新打开、编辑和反复完善。 向 agents 请求仪表盘、分析、审计或报告…...

FontCenter:如何彻底解决AutoCAD字体缺失问题的技术方案

FontCenter&#xff1a;如何彻底解决AutoCAD字体缺失问题的技术方案 【免费下载链接】FontCenter AutoCAD自动管理字体插件 项目地址: https://gitcode.com/gh_mirrors/fo/FontCenter FontCenter是一款开源AutoCAD字体管理插件&#xff0c;通过C客户端与Python Web服务器…...

Windows系统优化终极指南:5个高效清理技巧与智能资源管理实战

Windows系统优化终极指南&#xff1a;5个高效清理技巧与智能资源管理实战 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设…...

多模态数据提取:微调与少样本提示

这是一篇偏实践向的记录,主要整理我在「用多模态大模型做发票数据结构化提取」过程中踩过的坑、验证过的方案,以及一些比较稳妥的落地思路。整体目标只有一个:让模型稳定输出可直接用的 JSON,而不是“看起来很聪明”的一大段解释。 背景与目标 实际业务里,我们经常会遇到…...

告别模糊!用Qwen-Image-Edit-2511-Unblur-Upscale轻松修复人脸照片

告别模糊&#xff01;用Qwen-Image-Edit-2511-Unblur-Upscale轻松修复人脸照片 1. 为什么你需要这款图像修复神器 你是否遇到过这样的情况&#xff1a;手机拍下的珍贵照片因为手抖变得模糊&#xff0c;或者老照片经过多次翻拍后细节全无&#xff1f;传统修图软件往往对这些模…...

Qwen3.5-2B入门指南:医疗报告OCR识别+结构化摘要生成全流程

Qwen3.5-2B入门指南&#xff1a;医疗报告OCR识别结构化摘要生成全流程 1. 项目概述 Qwen3.5-2B是一款20亿参数规模的轻量级多模态大语言模型&#xff0c;特别适合在本地环境中部署运行。该模型在医疗报告处理方面展现出独特优势&#xff0c;能够实现&#xff1a; 医疗文档OC…...

家长工作忙没时间管?KISSABC学习报告让您1分钟掌握孩子学情

加班族的无奈“我每天到家都快9点了&#xff0c;孩子都准备睡觉了。根本不知道他今天学了什么&#xff0c;学得怎么样。”这是很多双职工家长的痛点。想管&#xff0c;没时间&#xff1b;不管&#xff0c;不放心。行业洞察&#xff1a;数据化学习报告成为刚需随着AI技术在教育领…...

Spring Boot 异步任务调度

Spring Boot 异步任务调度&#xff1a;提升应用性能的利器 在现代Web应用中&#xff0c;高并发和快速响应是开发者追求的核心目标之一。Spring Boot作为Java生态中最流行的框架之一&#xff0c;其异步任务调度功能为开发者提供了一种高效处理耗时任务的解决方案。通过异步执行…...

ARM CoreSight ETM11CS调试架构与信号接口设计

1. ARM CoreSight ETM11CS调试架构解析在嵌入式系统开发中&#xff0c;实时指令跟踪是定位复杂问题的关键手段。ETM11CS作为ARM CoreSight调试架构中的关键组件&#xff0c;其信号接口设计直接决定了调试数据的可靠性和实时性。与传统的JTAG调试不同&#xff0c;ETM采用实时指令…...

数据结构算法实践:用Nanbeige 4.1-3B生成代码与可视化讲解

数据结构算法实践&#xff1a;用Nanbeige 4.1-3B生成代码与可视化讲解 最近在准备计算机科学的教学材料时&#xff0c;我一直在想&#xff0c;有没有一种更高效、更直观的方法来讲解那些经典的数据结构和算法。传统的教学方式&#xff0c;要么是老师写板书&#xff0c;要么是放…...