题目描述

基本思路
滑动窗口
- 利用
HashSet实现 - 利用
HashMap实现
Java实现
- HashSet
public static int lengthOfLongestSubstring3(String s) {
if(s == null || s.length() == 0) return 0;
HashSet<Character> set = new HashSet<>();
int res = 0;
for(int i = 0, j = 0; i < s.length(); i ++ ) {
if(set.contains(s.charAt(i))) {
set.remove(s.charAt(j));
j++;
i--;
} else {
set.add(s.charAt(i));
res = Math.max(res, i - j + 1);
}
}
return res;
}
- HashMap
public static int lengthOfLongestSubstring2(String s) {
if( s == null || s.length() == 0) return 0;
HashSet<Character> set = new HashSet<>();
int res = 0;
for(int i = 0, j = 0; i < s.length(); i++) {
if(set.contains(s.charAt(i))) {
set.remove(s.charAt(j));
j++;
} else {
set.add(s.charAt(i));
res = Math.max(res, i - j + 1);
}
}
return res;
}

本文深入探讨了求解字符串中最长无重复字符子串长度的算法,通过滑动窗口结合HashSet与HashMap的数据结构实现,提供了Java代码示例,帮助读者理解和掌握这一经典算法问题。
1795

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



