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

无重复字符的最长子串-中等

leetcode地址

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

提示:

0 <= s.length <= 5 * 10^4
s 由英文字母、数字、符号和空格组成
thought:滑动窗口法
使用map,当出现了同样的值,则移动最开始计数的下一个位置:
abca-->  该位置到底第二个a----->left指向第一次出现a的下标+1,即b的位置---》开始计数
			if(map.containsKey(s.charAt(i))){
                left = Math.max(left,map.get(s.charAt(i))+1);
            }

比较大小时,取一个值作为max来比较大小,最后取最大
class Solution {
    public int lengthOfLongestSubstring(String s) {
        int left=0;
        if (s.length()<=0) return 0;
        HashMap<Character,Integer> map = new HashMap<Character,Integer>();
        int max = 0;
        for(int i =left;i<s.length();i++){
            if(map.containsKey(s.charAt(i))){
                left = Math.max(left,map.get(s.charAt(i))+1);
            }
            map.put(s.charAt(i),i);
            max = Math.max(max,i-left+1);
        }
        return max;
    }
}

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

相关文章:

  • docker运行ActiveMQ-Artemis
  • 管家婆财贸ERP BB059.银行流水导入对账
  • LLM之模型评估:情感评估/EQ评估/幻觉评估等
  • C指针创建三维数组
  • OpenEuler 下 Docker 安装、配置与测试实例
  • Linux——简单认识vim、gcc以及make/Makefile
  • go语言学习-并发编程(并发并行、线程协程、通道channel)
  • Efficient physics-informed neural networks using hash encoding
  • 逻辑漏洞与越权
  • 【1day】致远 A8系统getAjaxDataServlet-xxe接口任意文件读取学习
  • windows 安装两个mysql
  • frp内网穿透部署,轻松实现内网服务对外访问
  • Gan论文阅读笔记
  • SQL FOREIGN KEY 约束- 保障表之间关系完整性的关键规则
  • 解释区块链技术的应用场景和优势。
  • LinuxBasicsForHackers笔记 -- 压缩和归档
  • AIGC创作系统ChatGPT网站源码,Midjourney绘画,GPT联网提问/即将支持TSS语音对话功能
  • 【漏洞复现】万户协同办公平台ezoffice wpsservlet接口存在任意文件上传漏洞 附POC
  • 因为 postman环境变量全局变量设置好兄弟被公司优化了!
  • C语言精选——选择题Day39
  • 共享娱乐宝库:电视盒子影视源分享攻略
  • 常用Nmap脚本
  • 新时代商业旨意:传统商家如何变革?
  • 潮落云起:中国云桌面的产业变局
  • maven学习笔记总结
  • TCP/IP_整理起因