728x90
📚문제
📝풀이
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
'SQL > LeetCode' 카테고리의 다른 글
LeetCode / 1084. Sales Analysis III / MySQL / Easy (1) | 2023.12.28 |
---|---|
LeetCode / 607.Sales Person / MySQL / Easy (0) | 2023.12.27 |
LeetCode / 1321. Restaurant Growth / MySQL / Medium / FROM절 서브쿼리 , Window 함 (0) | 2023.12.24 |
LeetCode / 180. Consecutive Numbers / MySQL / Medium / OVER, LAG,LEAD (0) | 2023.12.21 |
LeetCode / 185. Department Top Three Salaries / MySQL / Hard (0) | 2023.12.20 |