题目描述
无重复字符的最长子串
示例1
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例2
输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例3
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
双指针法
class Solution {
public int lengthOfLongestSubstring(String s) {
HashSet set = new HashSet();
int len = s.length();
int rk=0;
int result = 0;
for(int i =0;i<len;i++){
while(rk<len && !set.contains(s.charAt(rk))){
set.add(s.charAt(rk));
rk++;
}
result = Math.max(result,rk-i);
set.remove(s.charAt(i));
}
return result;
}
}