Algorithm/leetcode

Longest Substring Without Repeating Characters

마닐라 2022. 3. 22. 17:06

📍 문제 설명

https://leetcode.com/problems/longest-substring-without-repeating-characters/

 

Longest Substring Without Repeating Characters - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

💡 접근

해쉬맵을 이용하는데 문자와 해당 문자가 나타난 인덱스를 저장하여서 풀이

 

👩‍💻 코드

import java.io.*;
import java.util.*;

public class Solution {
    public int lengthOfLongestSubstring(String s) {
        int max = 0;

        Map<Character, Integer> map = new HashMap<>();

        for(int lt = 0, rt = 0; rt < s.length(); rt++) {
            //이미 존재하는 문자가 있으면 lt를 해당 문자의 인덱스 이후로 하여서 길이 계산
            if(map.containsKey(s.charAt(rt))) {
                lt = Math.max(lt, map.get(s.charAt(rt)) + 1);
            }
            //현재 문자와 그 문자의 인덱스를 넣기
            //이미 존재하는 문자는 위에서 처리되고 덮어쓰여진다.
            map.put(s.charAt(rt), rt);
            max = Math.max(max, rt-lt+1);
        }

        return max;
    }


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        Solution s = new Solution();
        String str = "abcabcbb";
        s.lengthOfLongestSubstring(str);
    }


}

'Algorithm > leetcode' 카테고리의 다른 글

Longest Palindromic Substring  (0) 2022.03.22