1、题目
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
2、解法(滑动窗口)
public class Solution{
public int lengthOfLongestSubstring(String s){
int len = s.length();
int i=0, j=0, sub=0;
Set<Character> set = new HashSet<>();
while(i < len && j < len )
{
if(!set.contains(s.charAt(j))){
// 边添加边计算长度
set.add(s.charAt(j++));
sub = Math.max(sub, j-i);
}
else
{
// 此时j并不变,直到i移到j那里
set.remove(s.charAt(i++));
}
}
return sub;
}
时间复杂度O(n), 空间复杂度O(min(m,n)), m代表字符集的大小(最后存储在HashSet中字符的大小), n代表整个字符串的长度
3、思路




738

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



