个人主页深夜coding算法 专栏系列2026年华为最新OD机试题库详解 一次订阅永久解锁 | 持续更新100篇 | 6语言全覆盖文章目录❄️前言☀️一题目描述 题目名称 题目内容 输入描述 输出描述 示例☀️二解题思路☀️三代码实现CJavaPython3C语言JavaScriptGo☀️四复杂度分析⭐ 五易错点坑1翻转次数恰好等于K时也算合法坑2K可能比字符串还长共勉❄️前言五子棋迷这题考的就是滑动窗口 边界处理。核心就一句给定一个最大翻转次数求最长连续子串。用双指针维护窗口比暴力枚举快得多。☀️一题目描述 题目名称五子棋迷 题目内容张兵和王武是五子棋迷。工作之余经常切磋棋艺走棋总有个水平高低现在约定采用五局三胜制来判断水平高低。给出对弈的总局数以及每局的胜负情况1 表示张兵胜0 表示王武胜请帮助统计张兵最多能连胜多少局。注意可以翻转改动至多K局的比赛结果让张兵数字1形成更长的连胜。 输入描述第一行整数K表示最大翻转次数第二行由0和1组成的字符串1表示张兵胜0表示王武胜 输出描述输出一个整数表示翻转至多 K 局后张兵1能获得的最长连胜局数。 示例输入 2 10101 输出 5说明翻转中间两个0→1得到11111最长连胜 5。☀️二解题思路滑动窗口维护窗口[left, right]窗口内的0个数需翻转的局数≤ K。当0的个数 K 时收缩左边界。过程中记录窗口最大长度。☀️三代码实现C#includeiostream#includestring#includealgorithmusingnamespacestd;intmain(){intK;string s;cinKs;intns.size(),zeros0,ans0;for(intL0,R0;Rn;R){if(s[R]0)zeros;while(zerosK)if(s[L]0)zeros--;ansmax(ans,R-L1);}coutansendl;}Javaimportjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);intKsc.nextInt();sc.nextLine();Stringssc.nextLine();intzeros0,ans0;for(intL0,R0;Rs.length();R){if(s.charAt(R)0)zeros;while(zerosK)if(s.charAt(L)0)zeros--;ansMath.max(ans,R-L1);}System.out.println(ans);}}Python3Kint(input())sinput().strip()zerosansL0forRinrange(len(s)):ifs[R]0:zeros1whilezerosK:ifs[L]0:zeros-1L1ansmax(ans,R-L1)print(ans)C语言#includestdio.h#includestring.h#defineMAX(a,b)((a)(b)?(a):(b))intmain(){intK,zeros0,ans0;chars[1024];scanf(%d\n%s,K,s);intnstrlen(s);for(intL0,R0;Rn;R){if(s[R]0)zeros;while(zerosK)if(s[L]0)zeros--;ansMAX(ans,R-L1);}printf(%d\n,ans);}JavaScriptconstinputrequire(fs).readFileSync(0,utf-8).trim().split(\n);constKinput[0],sinput[1];letzeros0,ans0,L0;for(letR0;Rs.length;R){if(s[R]0)zeros;while(zerosK)if(s[L]0)zeros--;ansMath.max(ans,R-L1);}console.log(ans);Gopackagemainimport(fmt)funcmain(){varKint;varsstringfmt.Scanf(%d\n%s,K,s)zeros,ans,L:0,0,0forR:0;Rlen(s);R{ifs[R]0{zeros}forzerosK{ifs[L]0{zeros--}L}ifR-L1ans{ansR-L1}}fmt.Println(ans)}☀️四复杂度分析指标数值时间复杂度O(N)空间复杂度O(1)⭐ 五易错点坑1翻转次数恰好等于K时也算合法zeros K是条件不能写成 K。坑2K可能比字符串还长如果 K ≥ 字符串长度答案就是字符串长度本身。共勉滑动窗口三板斧扩右边界、收左边界、更新答案。这题练的就是这个节奏。关于本专栏一次订阅永久解锁全部100篇真题详解6语言全覆盖Java | Python3 | C | C语言 | JsNode | Go