首页 > 其他分享 >leet code 3. 无重复字符的最长子串

leet code 3. 无重复字符的最长子串

时间:2023-10-07 17:01:41浏览次数:33  
标签:子串 字符 leet code int right cntMap 最长

leet code 3. 无重复字符的最长子串

题目描述

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

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

请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

提示:

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

题目解析

典型的滑动窗口题目 需要注意要求最长子串的长度 那么应该在控制窗口内没有重复子串的时候计算结果

show code

class Solution {
    public int lengthOfLongestSubstring(String s) {
        // s 字符串的长度
        int n = s.length();
        // 定义 子串的左边界
        int left = 0;
        // 定义一个结果变量.
        int ans = 0;
        // 定义一个map来记录字符出现的次数.
        Map<Character, Integer> cntMap = new HashMap<>();
        for(int right = 0;right < n;right++) {
            char at = s.charAt(right);
            // 记录当前字符出现的次数.
            cntMap.put(at, cntMap.getOrDefault(at, 0 ) + 1);
            while(cntMap.get(at) > 1) {
                char l = s.charAt(left);
                cntMap.put(l, cntMap.get(l) - 1);
                left++;
            }
            ans = Math.max(ans, right - left + 1);
        }
        return ans;
    }
}

标签:子串,字符,leet,code,int,right,cntMap,最长
From: https://blog.51cto.com/u_16079703/7739700

相关文章

  • 最高评级!华为云CodeArts Board获信通院软件研发效能度量平台先进级认证
    9月26日,华为云CodeArtsBoard获得了中国信通院《云上软件研发效能度量分级模型》的先进级最高级评估,达到了软件研发效能度量平台评估的通用效能度量能力、组织效能模型、项目效能模型、资源效能模型、个人效能模型、研发效能评价模型、项目管理域、开发域、测试域、运维/运营域的先......
  • vscode设置文件忽略
    转到顶部菜单中的"文件"(File)>"首选项"(Preferences)>"设置"(Settings)或者您可以使用快捷键Ctrl+,或Cmd+,打开设置。在设置页面中,搜索框内输入"files.exclude" 在这里添加即可 ......
  • idea报错:Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (d
    idea版本:​​2020.3​​idea报错:在查阅了资料以后发现是​​IDEA2020​​的兼容问题 Failedtoexecutegoalorg.codehaus.mojo:exec-maven-plugin:3.0.0:exec(default-cli)onprojectsms:Commandexecutionfailed.解决方法:1、测试不要用​​main​​方法测试,使用​​......
  • 华为云CodeArts Check代码检查服务用户声音反馈集锦(8)
    作者:gentle_zhou原文链接:<https://bbs.huaweicloud.com/blogs/411562>CodeArtsCheck(原CodeCheck),是自主研发的代码检查服务。建立在华为30年自动化源代码静态检查技术积累与企业级应用经验的沉淀之上,为用户提供代码风格、通用质量与网络安全风险等丰富的检查能力,提供全面质量报告、......
  • AtCoder Grand Contest 057 E RowCol/ColRow Sort
    洛谷传送门AtCoder传送门首先考虑一个经典的套路:转\(01\)。具体而言,我们考虑若值域是\([0,1]\)怎么做。发现可以很容易地判定一个\(A\)是否合法。设矩阵第\(i\)行的和为\(r_i\),第\(j\)列的和为\(c_j\),那么合法当且仅当\(A\)的\(\{r_i\}\)和\(\{c_j\}\)(可重集......
  • 20款VS Code实用插件推荐
    思维导航前言VSCode相关链接地址VSCode拓展插件安装适用于VSCode的中文(简体)语言包VSCodeC#开发工具包VisualStudio代码的图标TabNine代码补全工具CopilotAI辅助编程工具自动添加关闭标签VsCode最好的代码注释扩展插查找并修复JavaScript代码中的问题Vs......
  • vscode单步调试Android c++源码
    vscode单步调试Androidc++源码  目录步骤1.运行gdbclient.py脚本2.复制生成的launch.json并新建/home/jetson/android_aosp/aosp/.vscode/launch.json3.运行gdb即可,打断点参考 步骤注意:这个过程需要在Android源码环境中运行,可以使用adb端口转发工具,来......
  • VS Code开发React-Native及Flutter 开启无线局域网安卓真机调试问题
    VSCode开发React-Native及Flutter开启无线局域网安卓真机调试问题发布于 2020-10-2015:48:471.7K0举报笔者前段时间在做react-native开发,一直是有线连接安卓真机进行调试的。有线调试确实带来诸多麻烦,因为在调试过程中需要频繁和手机进行交互,导致有时候......
  • vscode c++ 编译运行配置(信息学竞赛OIer专用)
    vscodec++编译运行OI专用配置在你的文件夹下建立一个名为\(\tt.vscode\)的文件夹。目录是这样的:\(\tt.vscode\)\(\tt|--c\_cpp\_properties.json\)\(\tt|--launch.json\)\(\tt|--tasks.json\)\(\tt.vscode/c\_cpp\_properties.json\){"configurations&qu......
  • 2023中大厂Android面试八股文合集,GitHub,牛客,leetcode已爆火!
    前言金九银十已过半,不知道大家现在都到哪个阶段了,有没有已经找到心仪的工作的朋友?有没有还没准备好面试在各大平台找资料临时抱佛脚的朋友?或是现在在准备,想要明年金三银四跳槽的朋友?不管你是现在急切找工作还是找资料备战,我都非常推荐你看看我花2个多月从GitHub,牛客,leetcode上为大......