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

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

题目内容:

给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,并返回该

子字符串

 最大 长度。

示例 1:

输入: s = "bcbbbcba"

输出: 4

解释:

以下子字符串长度为 4,并且每个字符最多出现两次:"bcbbbcba"

示例 2:

输入: s = "aaaa"

输出: 2

解释:

以下子字符串长度为 2,并且每个字符最多出现两次:"aaaa"

题目解法:

这道题是不定长滑动窗口的解法,有点理解什么叫不定长了,定长滑动窗口,你移动了右边一次,左边就得跟着移动一次,无论如何都要移动;而不定长窗口不是,右边移动,左边只有窗口条件不符合时才会移动一次或者多次;以这道题为例,窗口右边移动进来一个新值,只有窗口相同字母出现两次以上,左边才会动;

/**
 * @param {string} s
 * @return {number}
 */
var maximumLengthSubstring = function(s) {
    if(!s) return 0
    let ans=0;
    let n=s.length;
    let map=new Map()
    let left=0
    for(let i=0;i<n;i++){
        map.set(s[i],map.has(s[i])?map.get(s[i])+1:1)
        while(map.get(s[i])>2){
            map.set(s[left],map.get(s[left])?map.get(s[left])-1:0)
            left++
        }
        ans=Math.max(ans,i-left+1)
    }
    return ans
};


http://www.kler.cn/a/452827.html

相关文章:

  • 生成对抗网络,边缘计算,知识图谱,解释性AI
  • Intent--组件通信
  • MySQL 数据”丢失”事件之 binlog 解析应用
  • 从虚拟到现实:AI与AR/VR技术如何改变体验经济?
  • 05.HTTPS的实现原理-HTTPS的握手流程(TLS1.2)
  • 纯Dart Flutter库适配HarmonyOS
  • sentinel限流+其他
  • 基于ISO 21434的汽车网络安全实践
  • LRU 缓存
  • 【Apache Paimon】-- 11 -- Flink 消费 kakfa 写 S3 File
  • 全局JDK环境和ES自带的JDK混用导致的ES集群创建失败
  • Spring Boot 知识要点全解析
  • 04.HTTPS的实现原理-HTTPS的混合加密流程
  • 【魅力golang】之-玩转协程
  • Qt之QML应用程序开发:给应用程序添加图标文件
  • 【FastAPI】日志
  • element ui--下拉根据拼音首字母过滤
  • 纯真社区版IP库CZDB数据格式使用教程
  • 05.HTTPS的实现原理-HTTPS的握手流程(TLS1.2)
  • 【大语言模型】ACL2024论文-34 你的模型能区分否定和隐含意义吗?通过意图编码器揭开挑战
  • 美食推荐系统|Java|SSM|JSP|
  • w~视觉~3D~合集5
  • 如何编写 Prompt
  • 笔记工具--MD-Markdown的语法技巧
  • OSI 网络 7 层模型
  • Let‘s encrypt 免费 SSL 证书安装