无重复字符的最长字串
无重复字符的最长字串
前言
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
思想
利用两指针(变量)逐步向右遍历该字符串。
利用HashSet
数据结构约束子串具有无重复性。
利用迭代,前一字串长度与新子串长度每每比较取大值。
代码
class Solution { public int lengthOfLongestSubstring(String s) { //哈希集合,记录每个字符是否出现过 Set<Character> subs = new HashSet<Character>(); int n = s.length(); //1.定义变量:右指针初始为-1,代表还未移动 int r = -1; int ans = 0; for(int i =0;i<n;++i){ if(i!=0){ //先移动左指针,并从HashSet中移除旧的值 subs.remove(s.charAt(i-1)); } while(r+1<n&& !subs.contains(s.charAt(r+1))){ //如果右指针还未遍历到最后,并且HashSet中没有右指针的值 //不断移动右指针 subs.add(s.charAt(r+1)); r++; } //逐步将新字串和旧答案比较,取大值 ans = Math.max(ans,r - i + 1); } return ans; } }
比任何人都要努力
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)