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

2025年- G29-Lc103-3. 最长无重复字符的子字符串--java版

1.题目描述

在这里插入图片描述

2.思路

思路1:在字符串 s 中寻找最长的无重复字符子串的长度,它使用了 滑动窗口 和 HashMap 记录字符索引 的方法。

例子1:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
总结:用hashmap记录键值对,键唯一,但是值可以不同。
start来更新索引,也就是遇到重复字符,说明按此顺序的字符有重复。我们应该跳到下一个字母继续执行。
在这里插入图片描述

补充1:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
··············································································
补充2
在这里插入图片描述
在这里插入图片描述
·······························································
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.代码实现

class Solution {

    public int lengthOfLongestSubstring(String s) {

        //1.定义一个哈希表,哈希表可以满足键唯一,值不同.存储字符和字符的索引
        //对应到字符串就是字母一样,但是索引可以不动
        HashMap<Character,Integer> s1=new HashMap<>();
        //2.初始化无重复字符串的最大长度
        int maxLen=0;
        int start=0;
        for(int i=0;i<s.length();i++)
        {
            char letter=s.charAt(i);
            //3.处理遇到重复的字符的子字符串。查找哈希表中现有的键是不是有该字符
            // 如果字符 letter在 HashMap 里,并且索引大于等于 start,就更新 start
            //比如abca,因为start=0,第四个a第二次遇到因为索引是0,等于第一次遇到的a,索引为0,但是此时用大于号,start不更新
            if(s1.containsKey(letter)&&s1.get(letter)>=start)
            {
               start=s1.get(letter)+1;
                //4.更新遇到重复字符的索引
            }
            // 记录当前字符的索引
            s1.put(letter,i);
            //4.计算当前不重复的字符串的长度
            int currLen=i-start+1;
            maxLen=Math.max(currLen,maxLen);
        }
        return maxLen;

    }

    // public static void main(String args[])
    // {
    //     Solution07 test=new Solution07();
    //     String s1="abcdeasdfgh";
    //     int num=test.lengthOfLongestSubstring(s1);
    //     System.out.println("返回无重复字符串的长度"+num);

    // }
}


相关文章:

  • PHP接口开发:从基础到高级的全面指南
  • 算法题(107):function
  • Windows 10/11 使用 VSCode + SSH 免密远程连接 Ubuntu 服务器(指定端口)
  • matlab使用fmincon开加速
  • 光电效应及普朗克常数的测定数据处理 Python实现
  • 时隔多年,终于给它换了皮肤,并正式起了名字
  • 洛谷: P1443 马的遍历
  • OpenHarmony 入门——ArkUI 跨页面数据同步和应用全局单例的UI状态存储AppStorage 小结(三)
  • QML控件 - Slider
  • python脚本处理excel文件
  • 如何选择?Postman vs JMeter 对比介绍
  • zynq7020 最小ps环境速通
  • 开源大模型使用总结
  • Unity选择框(魔兽争霸3)
  • 文生图语义识别插件使用(controlnet)
  • STM32F103_LL库+寄存器学习笔记01 - 梳理CubeMX生成的LL库最小的裸机系统框架
  • immortalwrt一键istoreOS风格化
  • Unity射击游戏手榴弹笔记
  • 广告推荐算法 - 学习笔记
  • AL11和SM69 文件服务器中创建文件夹
  • 陕西省市监局通报5批次不合格食品,涉添加剂超标、微生物污染等问题
  • 北方将现今年首场大范围高温天气,山西河南山东陕西局地可超40℃
  • 获派驻6年后,中国驻厄瓜多尔大使陈国友即将离任
  • 美国务院批准向土耳其出售导弹及相关部件,价值3.04亿美元
  • “80后”德州市接待事务中心副主任刘巍“拟进一步使用”
  • 国务院关税税则委员会关于调整对原产于美国的进口商品加征关税措施的公告