LeetCode 滑动窗口 每个字符最多出现两次的最长子字符串

news/2024/9/24 1:12:39/

每个字符最多出现两次的最长子字符串

给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,并返回该
子字符串
的 最大 长度。
示例 1:
输入: s = “bcbbbcba”
输出: 4
解释:
以下子字符串长度为 4,并且每个字符最多出现两次:“bcbbbcba”。
示例 2:
输入: s = “aaaa”
输出: 2
解释:
以下子字符串长度为 2,并且每个字符最多出现两次:“aaaa”。
提示:
2 <= s.length <= 100
s 仅由小写英文字母组成。

题解

本体需要找到满足条件的最长子字符串,所以我们使用滑动窗口进行解题

由于最长子字符串的长度未知,所以滑动窗口是不定长滑动窗口

我们分别用 l 与 r 代表滑动窗口的左边有右边界(这里采用的有效窗口区域不包括 r 的位置)

采用一个数组 arr 对窗口中出现过的字母的次数进行统计

定义 int res = 2 记录返回值

然后循环遍历字符串直到 r == strlen(s) 退循环

循环过程中假如 arr[s[r]-‘a’] < 2 则 r++

否则说明该字母已经出现过两次了

arr[s[l]-‘a’]–

l++

在一次更新完窗口之后子字符串的长度为 r-l 找到最大的 r-l 赋给 res 即可

代码如下↓

int maximumLengthSubstring(char* s) {int l=0,r=1;int arr[26];memset(arr,0,sizeof(arr));arr[s[l]-'a']++;int res = 2;while(r<strlen(s)){if(arr[s[r]-'a']<2){arr[s[r]-'a']++;r++;}else{arr[s[l]-'a']--;l++;}if(r-l>res){res = r-l;}}return res;
}

http://www.ppmy.cn/news/1529579.html

相关文章

vue3自定义hooks

引言 Vue3引入了组合式API&#xff0c;使得代码逻辑更自由、灵活。其中自定义Hooks能让我们将客服用的逻辑抽离成一个独立的函数&#xff0c;以实现在多个组件中复用的目的。可以简单理解成封装成一个模块&#xff0c;以方便其他地方调用。 实现 自定义hooks useDog impor…

在petalinux工程里添加iperf

在petalinux工程里添加iperf 1,首先确定iperf包在哪里 xxx/components/yocto/layer/ meta-openembedded/meta-oe/recipes-benchmark/iperf3/ 2&#xff0c;然后就是往menuconfig中加&#xff1a; xxx/project-spec/meta-user/conf/user-rootfsconfig文件中 添加&#xff1a; …

Selenium with Python学习笔记整理(网课+网站持续更新)

本篇是根据学习网站和网课结合自己做的学习笔记&#xff0c;后续会一边学习一边补齐和整理笔记 官方学习网站在这获取&#xff1a; https://selenium-python.readthedocs.io/getting-started.html#simple-usage WEB UI自动化环境配置 (推荐靠谱的博客文章来进行环境配置,具…

C++(Qt)软件调试---断点高级用法(20)

C(Qt)软件调试—断点高级用法&#xff08;20&#xff09; 文章目录 C(Qt)软件调试---断点高级用法&#xff08;20&#xff09;[toc]1、概述2、断点高级用法1.1 条件断点1.2 日志断点/记录点/消息追踪点1.3 函数断点1.4 命中次数断点1.5 异常断点1.6 等待断点/触发断点1.7 临时断…

iOS17找不到developer mode

iOS17找不到开发者模式 developer mode 下载过app之后、弹窗Developer Mode Required之后&#xff0c;这个菜单就出现了&#xff08;之前死活找不到&#xff09;。 背景&#xff1a;用蒲公英分发测试app&#xff0c;有个同事买了新机(iphone 15 pro max)&#xff0c;添加了白名…

Hello,Spring Boot...

今天开启了Spring Boot学习之旅。 首先就是&#xff0c;JDK、Maven、IDEA以及各种官网的下载、安装与配置 然后通过组件创建小类&#xff0c;最让人头痛的就是&#xff0c;这个spring-boot-starter-thymeleaf&#xff0c;下错版本了 其他的一切顺利&#xff0c;自动化明显 最后…

SQLServer数据分页

一.分页 将一定量的数据进行分页&#xff0c;每一页中定量存储数据 1.top分页查询 比如当前存在于数据库中的一共有40条数据&#xff0c;我们将每10条数据算作一页&#xff0c;那么一共可以分出4页&#xff0c;如果要进行查询的话&#xff0c;只需要使用如下格式即可&#x…

fiddler抓包07_抓IOS手机请求

课程大纲 前提&#xff1a;电脑和手机连接同一个局域网 &#xff08;土小帽电脑和手机都连了自己的无线网“tuxiaomao”。&#xff09; 原理如下&#xff1a; 电脑浏览器抓包时&#xff0c;直接就是本机网络。手机想被电脑Fiddler抓包&#xff0c;就要把Fiddler变成手机和网络…