A sliding window is an abstract concept commonly used in array/string problems. It is effective to solve problems like finding the Longest subarray/substring following a certain pattern. It uses 2 indices i and j to keep track of start and end of the window respectively.

Array sequence: 1,2,**3**,4,5,**6**,7.
a window of [3,4,5,6] can be indicated by
i-> 2;
j-> 5;

Here is an example of using this concept:

Given a string, find the length of the **longest substring** without repeating characters.

**Examples:**

Given `"abcabcbb"`

, the answer is `"abc"`

, which the length is 3.

Given `"bbbbb"`

, the answer is `"b"`

, with the length of 1.

Given `"pwwkew"`

, 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<Character> set = new HashSet<Character>();
int i = 0; int j = 0;
int max_len = 0;
while (i < s.length() && j < s.length()){
if(!set.contains(s.charAt(j))){
set.add(s.charAt(j));
j++;
max_len = max_len>(j-i)? max_len : (j-i);
}else{
set.remove(s.charAt(i));
i++;
}
}
return max_len;
}
}

### Like this:

Like Loading...

*Related*