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.
public class Solution {
public int lengthOfLongestSubstring(String s) {
if (s == null || s.isEmpty()) {
return 0;
}
int i = 0, j = 0, maxLen = 0;
boolean[] flag = new boolean[256];
while (j < s.length()) {
char c = s.charAt(j);
if (!flag[c]) {
flag[c] = true;
j++;
} else {
maxLen = Math.max(maxLen, j - i);
while (s.charAt(i) != c) {
flag[s.charAt(i)] = false;
i++;
}
i++;
j++;
}
}
return Math.max(maxLen, j - i);
}
}