leetcode3-无重复字符的最长子串
- 滑动窗口
需要记录左边界left。当右边界移动的时候,如果新加入的字符已经存在,那么需要更新左边界,让left取左边界和上一个字符位置的最大值。
之后更新字符的最新位置,同时更新max
class Solution {
public int lengthOfLongestSubstring(String s) {
Map<Character, Integer> map = new HashMap<>();
int left = -1, max = 0;
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(map.containsKey(c)){
left = Math.max(left, map.get(c));
}
map.put(c, i);
max = Math.max(max, i-left);
}
return max;
}
}
本文作者:xzh-yyds
本文链接:https://www.cnblogs.com/xzh-yyds/p/16586058.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步