일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 생성형AI
- 리트코드
- GenerativeAI
- GenAI
- 코드업
- sql코테
- dfs
- medium
- stratascratch
- Microsoft
- nlp
- 알고리즘
- Python
- LeetCode
- 구글퀵랩
- 파이썬알고리즘
- 릿코드
- Python3
- 투포인터
- 자연어처리
- Blazor
- 파이썬기초100제
- codeup
- two-pointer
- 니트코드
- 슬라이딩윈도우
- slidingwindow
- SQL
- gcp
- 파이썬
Archives
- Today
- Total
Tech for good
[Leetcode/TwoPointer] 345. Reverse Vowels of a String 본문
IT/Computer Science
[Leetcode/TwoPointer] 345. Reverse Vowels of a String
Diana Kang 2025. 2. 21. 23:29class Solution:
def reverseVowels(self, s: str) -> str:
left, right = 0, len(s) - 1
vowels = set('aeiouAEIOU') # 대소문자 모두 포함된 집합
s = list(s) # 문자열을 리스트로 변환 (문자 교환을 위해)
while left < right:
# 왼쪽 포인터가 모음이 아닐 경우 이동
while left < right and s[left] not in vowels:
left += 1
# 오른쪽 포인터가 모음이 아닐 경우 이동
while left < right and s[right] not in vowels:
right -= 1
# 모음이면 서로 교환
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
return "".join(s) # 리스트를 다시 문자열로 변환하여 반환
주요 사항:
- in 연산자 사용
- s[left] in vowels를 사용.
- 대소문자 포함된 set 사용
- set('aeiouAEIOU')를 사용하여 in 연산을 빠르게 수행.
- set은 해시 테이블을 기반으로 동작하므로, 요소가 존재하는지 확인하는 연산(in 연산자)이 평균적으로 O(1) (상수 시간)에 수행.
- 반면, list나 tuple을 사용하면 O(n) (선형 시간) 소요.
- set('aeiouAEIOU')를 사용하여 in 연산을 빠르게 수행.
- 문자열을 리스트로 변환 후 문자 교환
- 문자열은 immutable(변경 불가) 이므로 list(s)로 변환 후 교환하고, 마지막에 "".join(s)로 다시 문자열로 변환.
'IT > Computer Science' 카테고리의 다른 글
[Leetcode/TwoPointer] 844. Backspace String Compare (0) | 2025.02.24 |
---|---|
[Leetcode/TwoPointer] 2825. Make String a Subsequence Using Cyclic Increments (0) | 2025.02.22 |
[NeetCode 150/String Manipulation,TwoPointer] Valid Palindrome (0) | 2025.02.21 |
[Leetcode/TwoPointer+Queue (Greedy)] 2149. Rearrange Array Elements by Sign (0) | 2025.02.21 |
[Leetcode/TwoPointer] 443. String Compression (0) | 2025.02.21 |