A.每日一题——1888. 使二进制字符串字符交替的最少反转次数
题目链接1888. 使二进制字符串字符交替的最少反转次数中等算法原理解法定长滑动窗口滑动窗口分类题目解析一轮复习——C.滑动窗口模型总结对于类型1的操作拿111000举例我们进行多次之后会发现一个规律而类型2的操作就是在插完一刀的位置开始进行翻转操作找最少翻转次数那么如何实现这一过程呢细节比如更新时cnt记录的是0101……模式的最小翻转次数那么n-cnt就是记录的1010……模式的最小翻转次数原理与下题相同A.每日一题——1758. 生成交替二进制字符串的最少操作数因为当前窗口内既可以改成0101……也可以改成1010……要取这两种模式的最小值min(cnt,n-cnt)思路一环滑动窗口会超时时间复杂度O(N²)我们可以枚举每个起始位置left然后用index(leftright)%n映射当前窗口[left,right]内的长为n的字符串通过right%2对应0101……的模式用cnt记录变成0101……需要翻转的最小次数缺点却很明显这会导致时间复杂度飙升到O(N²)而导致超时思路二字符串拼接滑动窗口细节遍历到2n-1而不是2n因为首尾共用的同一个写法一直接拼接17ms击败84.62%时间复杂度O(N)直接将两字符串拼接在一起成为新数组ss遍历更直观①如果不符合以开头为基准的模式0101……或1010……就用n^1进行‘0’和1的翻转②出窗口时为避免创建标记数组我们可以直接与原数组s进行比对因为出窗口时两者的left是一一对应的ss[left]!s[left]代表当时ss[left]进行过翻转写法二下标映射模拟拼接25ms击败55.13%时间复杂度O(N)与写法一不同我们也可以避免拼接字符串直接利用“正整数不是奇数就是偶数”的特点通过%2快速判断当前下标应为0还是应为1因为下标从0开始那么我们这种方式就对应着0101……的模式n-cnt就对应着1010……的模式这其中①s[right % n] % 2将字符0/1转为数字0/10的ASCII码48%201的49%21②出窗口时s[left] % 2 ! left % 2代表当时s[left]进行过翻转写法三位运算9ms击败98.08%时间复杂度O(N)我们可以用位运算对写法二的入窗口和出窗口进行优化我们要做的就是判断当前数s[x]是否模式0101……需要的数x是的话应该得到0不翻转否则得到1翻转对应入窗口时不等于就翻转累加翻转次数1对应出窗口时不等于就撤销当时的翻转-1核心位运算(s[x]^x)1判断在位置x上字符s[x]是否满足0101……的交替模式①s[x]0或1二进制最后一位恰好对应0和1②0101……模式里位置x应该是x%2也就是x的最后一位③s[x]^x如果字符和模式要求不一样结果最后一位就是1否则就是0④1只保留最后一位是1代表需要翻转是0代表无需翻转Java代码class Solution { //思路一环滑动窗口(会超时) public int minFlips(String ss) { char[] sss.toCharArray(); int ns.length,mincntn; for(int left0;leftn;left){//遍历每个开头位置 int cnt0;//记录变成0101……翻转次数 for(int right0;rightn;right){//映射到真实位置模拟当前窗口[left,right] int index(leftright)%n; char cs[index]; if(c!(right%20?0:1)) cnt; } //当前起点的最优解 mincntMath.min(mincnt,Math.min(cnt,n-cnt)); } return mincnt; } }class Solution { //思路二字符串拼接滑动窗口-写法一直接拼接 public int minFlips(String _s) { String _ss_s_s; char[] ss_ss.toCharArray(); char[] s_s.toCharArray(); int ns.length; int cnt0,mincntn;//最坏情况下翻转所有字符 for(int right1;right2*n-1;right){ //进窗口 if(ss[right]ss[right-1]){ cnt; ss[right]^1; } int leftright-n1; if(left0) continue; //更新 mincntMath.min(mincnt,Math.min(cnt,n-cnt)); //出窗口 if(ss[left]!s[left]) cnt--; } return mincntn?0:mincnt; } }class Solution { //思路二字符串拼接滑动窗口-写法二下标映射模拟拼接 public int minFlips(String ss) { char[] sss.toCharArray(); int ns.length; int mincntn,cnt0; //遍历到2n-1用right%n模拟拼接字符串ss的效果 for(int right0;right2*n-1;right){ //判断当前字符s[right%n]是否满足“0101……”模式 //s[right%n]%2:0→01→1 //进窗口 if(s[right%n]%2!right%2) cnt; int leftright-n1; if(left0) continue; //更新 //cnt当前窗口变成0101……的翻转次数 //n-cnt当前窗口变成1010……的翻转次数 mincntMath.min(mincnt,Math.min(cnt,n-cnt)); //出窗口 //如果之前翻转了现在要除去当时的翻转操作 if(s[left]%2!left%2) cnt--; } return mincnt; } }class Solution { //思路二字符串拼接滑动窗口-写法三位运算 public int minFlips(String ss) { char[] sss.toCharArray(); int ns.length; int mincntn,cnt0; for(int right0;right2*n-1;right){ //进窗口 cnt(s[right%n]^right)1; int leftright-n1; if(left0) continue; //更新 //cnt当前窗口变成0101……的翻转次数 //n-cnt当前窗口变成1010……的翻转次数 mincntMath.min(mincnt,Math.min(cnt,n-cnt)); //出窗口 //如果之前翻转了现在要除去当时的翻转操作 cnt-(s[left]^left)1; } return mincnt; } }

相关新闻

Matlab一维信号CNN二分类/多分类源程序

Matlab一维信号CNN二分类/多分类源程序

Matlab使用CNN(卷积神经网络)对一维信号(如语音信号、心电图信号)进行二分类源程序。 也可以改成多分类。 会提供原始数据,数据可直接替换为自己的数据运行,注释详细 工作如下: 1、加载数据,一共为200个正常样本和200个异常样本&a…

2026/7/3 5:06:47 阅读更多 →
你的爬虫正在被“数字处决”:为什么Cloudflare成了2026年最难缠的狱警?

你的爬虫正在被“数字处决”:为什么Cloudflare成了2026年最难缠的狱警?

昨天凌晨三点,我差点把咖啡洒在新买的机械键盘上。 一个老朋友打来电话,声音里透着绝望:“我的价格监控程序全挂了。跑了三年的脚本,今天突然全部返回403。我用上了轮换代理、随机UA、甚至加了Selenium模拟点击,结果Cl…

2026/7/4 4:19:35 阅读更多 →
心理医院怎么选?真实案例分享

心理医院怎么选?真实案例分享

行业痛点分析当前长沙心理服务领域面临多重技术与服务挑战。一方面,公众对心理疾病的认知仍存在显著偏差,约43%的轻症人群将情绪波动误判为“一时想不开”,延误干预窗口期(长沙市卫健委2023年社区筛查数据)。另一方面&…

2026/5/17 9:27:04 阅读更多 →

最新新闻

REPENTOGON脚本扩展器:解锁《以撒的结合》MOD开发新维度

REPENTOGON脚本扩展器:解锁《以撒的结合》MOD开发新维度

REPENTOGON脚本扩展器:解锁《以撒的结合》MOD开发新维度 【免费下载链接】REPENTOGON Script extender for The Binding of Isaac: Repentance 项目地址: https://gitcode.com/gh_mirrors/re/REPENTOGON REPENTOGON脚本扩展器是《以撒的结合:忏悔…

2026/7/6 5:12:32 阅读更多 →
3个暗黑破坏神2存档编辑难题,如何用免费Web工具完美解决?

3个暗黑破坏神2存档编辑难题,如何用免费Web工具完美解决?

3个暗黑破坏神2存档编辑难题,如何用免费Web工具完美解决? 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾为暗黑破坏神2的存档问题而烦恼?角色进度丢失、装备损坏、或者想尝试新build…

2026/7/6 5:10:31 阅读更多 →
毕设分享 深度学习手写数字识别系统(源码+论文)

毕设分享 深度学习手写数字识别系统(源码+论文)

文章目录 0 前言1 项目运行效果2 深度学习手写字符识别原理2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 最后 0 前言…

2026/7/6 5:08:31 阅读更多 →
GPT-6 vs Claude 5:2026 提示词工程进阶对比

GPT-6 vs Claude 5:2026 提示词工程进阶对比

GPT-6 vs Claude 5:2026 提示词工程进阶对比大模型进入2026年,单纯的“对话”已无法胜任复杂的生产级任务。随着GPT-6和Claude 5相继发布,提示词工程从“艺术”变成了“科学”。面对原生思维链、超长上下文和Agent工作流的革新,开…

2026/7/6 5:06:30 阅读更多 →
从评判者到驾驭者——贾子理论“懂-用“二维框架与认知偏差校正

从评判者到驾驭者——贾子理论“懂-用“二维框架与认知偏差校正

从评判者到驾驭者 ——贾子理论"懂-用"二维框架与认知偏差校正摘要本研究以公理-定理-定律层级理论为研究对象,从科学哲学的本体论与认识论角度,系统探讨了客观规律描述体系的属性定位、人与客观规律之间的正确关系模式,并以贾子理论(Kucius Theory)为典型样本进行实…

2026/7/6 5:04:29 阅读更多 →
Alternative Mod Launcher:告别传统启动器,开启XCOM 2模组管理新时代

Alternative Mod Launcher:告别传统启动器,开启XCOM 2模组管理新时代

Alternative Mod Launcher:告别传统启动器,开启XCOM 2模组管理新时代 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https:/…

2026/7/6 5:00:28 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻