•
문제 설명 : 특수기호를 포함한 문자열에서 특수 기호는 동일 위치, 알파벳은 뒤집은 문자열을 반환한다.
•
풀이 방법
◦
정방향 그대로 위치를 설정할 left 커서와, 역방향으로 순회하며 알파벳을 추가할 right 커서를 분리하여 이동시켰다.
◦
left커서가 특수기호를 찾을 동안 이동되는 요소의 값은 right 커서가 역순으로 이동하여 별도로 채워놓는다.
•
시간복잡도 :
•
성공 코드
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
복사