본문 바로가기

SQL/LeetCode

LeetCode / 1624. Largest Substring Between Two Equal Characters / Python / Easy

728x90

📚문제

출처 : LeetCode(https://leetcode.com/problems/largest-substring-between-two-equal-characters/)


📝풀이

class Solution(object):
    def maxLengthBetweenEqualCharacters(self, s):
        dic = {}
        ans = -1
        
        for idx,k in enumerate(s):
            if k in dic:
                ans = max(ans,idx-dic[k]-1)
            else:
                dic[k] = idx
        return ans

 

LeetCode에 있는 파이썬 문제인데

Daily로 1개씩 Update 되는 것 같다

전에 나온 문제는 너무 어려워서 풀이를 봐도 이해가 안되서 스킵했다

 

이 문제도 생각보다 어려웠다...

대칭되는 두 문자가 꼭 문자열 양 끝에 나오는 게 아니라서

그 부분이 조금 까다로웠다

그래서 게시판도 참고하고 구글링 해보다가

제일 간단하고 직관적인 풀이를 조금 참고하였다

 

풀이 💡

문자열 s를 enumerate 돌면서

빈 딕셔너리(dic)에 

문자열(Key)

그 문자열이 위치한 인덱스(Value) 

값의 형태로 넣어준다

 

그리고 만약 

딕셔너리에 있는 문자열이 한 번 더 등장한다면(문제에서 말하는 대칭조건 )

ans의 값을

기존 문자열이 존재하던 인덱스와 현재 문자열의 인덱스 차이로 변경해준다

( ex c의 인덱스가 1과 8에서 두번 등장한다면 두 숫자의 차이-1을 해주어 두 숫자 사이 거리(문자열 길이)를 구함)

 

부등호 1<x<8에서 x의 길이를 구하려면 8-1-1 = 6이 되는 것을 생각하면 된다

(문제에서 양쪽 대칭 문자열은 제외시키라고 했으므로)

 

 

 

728x90