본문 바로가기
Algorithm/LeetCode

[LeetCode] 3. Longest Substring Without Repeating Characters

by yunamom 2022. 4. 18.
728x90
300x250

3. Longest Substring Without Repeating Characters


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

 

Example 1:

Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.

Example 2:

Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.

Example 3:

Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.

 

Constraints:

  • 0 <= s.length <= 5 * 104
  • s consists of English letters, digits, symbols and spaces.

📖문제. 연속된 substring을 카운팅해서 제일 긴 문자를 구한다.

(BUT 같은 문자가 두번이상 나오면 안된다)

import java.util.HashSet;

class Solution {
    public int lengthOfLongestSubstring(String s) {
        
        int max = 0;
        int answer = 0;
        int i=0, j=0;
        int length = s.length();
        
        HashSet<Character> set = new HashSet<>();
        
        while(j < length){
            if(i > j) break;
            if(!set.contains(s.charAt(j))){
                set.add(s.charAt(j++));
                max = j - i;
                answer = (max > answer)?max:answer;
                continue;
            }
            set.remove(s.charAt(i++));
        }
        return answer;
    }
}
728x90
300x250

코드