3. Longest Substring Without Repeating Characters
Given a string s, find the length of the longest substring without repeating characters.
A substring is a contiguous non-empty sequence of characters within a string.
s
s
의 연속적인 일부분을 가져왔을 때, 내부에 중복되지 않는 문자열들 중 가장 긴 문자열의 길이Sliding Window
구간 내부 원소
)이 규칙적으로 변화한다.알고리즘 전략 : Sliding Window + Set 자료구조 이용
class Solution {
public int lengthOfLongestSubstring(String s) {
if (s.length() == 0) {
return 0;
}
Set<Character> charSet = new HashSet<>();
int front = 0;
int behind = 0;
charSet.add(s.charAt(0));
int maxLength = 1;
while (behind < s.length() - 1) {
behind++;
char newChar = s.charAt(behind);
if (!charSet.contains(newChar)) {
charSet.add(newChar);
maxLength = Math.max(behind - front + 1, maxLength);
continue;
}
while (newChar != s.charAt(front)) {
charSet.remove(s.charAt(front));
front++;
}
front++;
}
return maxLength;
}
}