LeetCode链接:力扣
题目:
给定一个字符串 s
,请你找出其中不含有重复字符的 最长连续子字符串 的长度。
示例:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子字符串是 "abc",所以其长度为 3。
代码:(双指针,都从头开始,用哈希表检测是否重复包含)
class Solution {
public int lengthOfLongestSubstring(String s) {
int n = s.length();
if(n <= 1) return n;
int left = 0, right = 0;
int maxLen = 1;
Set<Character> set = new HashSet<>();
while(right < n){
char rightChar = s.charAt(right);
while(set.contains(rightChar)){
set.remove(s.charAt(left));
left++;
}
maxLen = Math.max(maxLen, right - left + 1);
set.add(rightChar);
right++;
}
return maxLen;
}
}