Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: “abcabcbb”
Output: 3
Explanation: The answer is “abc”, with the length of 3.
Example 2:
Input: “bbbbb”
Output: 1
Explanation: The answer is “b”, with the length of 1.
Example 3:
Input: “pwwkew”
Output: 3
Explanation: The answer is “wke”, with the length of 3.
Note that the answer must be a substring, “pwke” is a subsequence and not a substring.
class Solution {
public int lengthOfLongestSubstring(String s) {
// 使用set进行存储。
Set<Character> set =new HashSet<>();
// 设置 i ,j 为左右指针。
int i=0,j=0,max=0;
while(j<s.length())
{
// 如果没有右指针指向的元素
if(!set.contains(s.charAt(j)))
{
// 把右指针的元素加入。并移动指针。
set.add(s.charAt(j));
j++;
max =Math.max(max,set.size());
}
// 如果有右指针指向的元素 ,把左指针指向的元素删除,并且移动左指针,
// 当下次循环时,如果判断还是有右指针指向的元素,
//会继续把左指针指向的元素删除,并且移动左指针,直到没有。
else
{
set.remove(s.charAt(i));
i++;
}
}
return max;
}
}