class Solution {
public int lengthOfLongestSubstring(String s) {
if(s.length() == 0) return 0;
Map<Character,Integer> map = new HashMap<>();
int l = 0;
int r = 0;
int max = 0;
while(r < s.length()){
map.put(s.charAt(r),map.getOrDefault(s.charAt(r),0) + 1);
while(map.getOrDefault(s.charAt(r),0) > 1){
map.put(s.charAt(l),map.get(s.charAt(l)) - 1);;
l++;
}
int len = r - l + 1;
max = Math.max(len,max);
r++;
}
return max;
}
}
用hash表即可
该博客介绍了如何利用哈希表解决编程问题,具体为找到字符串中无重复字符的最长子串。通过建立字符到出现次数的映射,动态更新哈希表,实现滑动窗口来寻找最长子串。这种方法有效地减少了遍历的时间复杂度。
1149

被折叠的 条评论
为什么被折叠?



