Search

Reverse Only Letters

문제 설명 : 특수기호를 포함한 문자열에서 특수 기호는 동일 위치, 알파벳은 뒤집은 문자열을 반환한다.
풀이 방법
정방향 그대로 위치를 설정할 left 커서와, 역방향으로 순회하며 알파벳을 추가할 right 커서를 분리하여 이동시켰다.
left커서가 특수기호를 찾을 동안 이동되는 요소의 값은 right 커서가 역순으로 이동하여 별도로 채워놓는다.
시간복잡도 : O(N)O(N)
성공 코드
class Solution: def reverseOnlyLetters(self, s: str) -> str: # 왼쪽 커서 -> 정방향으로 특수 기호 찾는 목적 # 우측 커서 -> 역방향으로 뒤집은 문자를 설정하기 위한 목적 left, right = 0, len(s) - 1 result = "" while left < len(s): # 특수 기호 문자를 발견할때까지, 알파벳을 right 커서를 사용하여 추가해준다. while left < len(s) and s[left].isalpha(): # 문자열의 가장 마지막 부분쪽부터 알파벳 확인 while right >= 0 and not s[right].isalpha(): right -= 1 # 알파벳 추가 result += s[right] right -= 1 left += 1 # 특수 기호 발견으로 while문을 빠져나오면, 특수 기호를 그대로 문자열에 추가 if left < len(s): result += s[left] left += 1 return result
Python
복사