[LeetCode] Largest Substring Between Two Equal Characters

아르당·2026년 6월 4일

LeetCode

목록 보기
341/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

문자열 s가 주어졌을 때, 두 개의 같은 문자를 포함하는 가장 긴 부분 문자열을 반환해라. 만약 부분 문자열이 없다면 -1을 반환해라.

부분 문자열은 문자열 내에서 연속된 문자들의 순서이다.

Example

#1
Input: s = "aa"
Output: 0
Explanation: 두 개의 'a'사이에 있는 문자열은 비어있다.

#2
Input: s = "abca"
Output: 부분 문자열은 "bc"이다.

#3
Input: s = "cbzxy"
Output: -1
Explanation: s에 같은 문자가 없다.

Constraints

  • 1 <= s.length <= 300
  • s는 오직 영어 소문자만 포함한다.

Solved

class Solution {
    public int maxLengthBetweenEqualCharacters(String s) {
        HashMap<Character, Integer> map = new HashMap<>();
        int max = 0;

        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);

            if(map.containsKey(c)){
                int diff = i - map.get(c);
                max = Math.max(max, diff);
            }else{
                map.put(c, i);
            }
        }

        return max - 1;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글