문자열 S가 있다고 가정하고 문자가 아닌 모든 문자가 위치를 변경하지 않고 모든 문자가 위치를 바꾸는 역 문자열을 찾아야 합니다. 따라서 주어진 문자열이 "a-bC-dEf-ghIj"이면 출력은 "j-Ih-gfE-dCba"가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 이 문제를 해결하기 위해 정규 표현식 라이브러리를 사용할 것입니다.
- S가 비어 있으면 S를 반환합니다.
- str :=빈 문자열, index1 :=0 및 index2 :=길이 S – 1
- 동안 index1
- 인덱스2>=0이고 S[인덱스1]이 알파벳이고 S[인덱스2]가 알파벳인 경우
- str :=str + S[index2]
- index2를 1 감소, index1을 1 증가
- 그렇지 않으면 S[index1]이 알파벳이면 index2를 1만큼 줄입니다.
- 그렇지 않으면 S[index1]이 알파벳이 아닌 경우 str :=str + S[index1], index1을 1만큼 증가
- 그렇지 않으면 index2를 1만큼 줄이고 index1을 1만큼 늘립니다.
- 인덱스2>=0이고 S[인덱스1]이 알파벳이고 S[인덱스2]가 알파벳인 경우
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
class Solution: def reverseOnlyLetters(self, S): if not S: return S str_= "" index1 = 0 index2 = len(S)-1 while index1<len(S): #print(index1,index2) if index2>=0 and S[index1].isalpha() and S[index2].isalpha(): str_+=S[index2] index2 -= 1 index1 += 1 elif S[index1].isalpha(): index2-=1 elif not S[index1].isalpha(): str_+=S[index1] index1+=1 else: index2 -= 1 index1 += 1 return str_ ob1 = Solution() print(ob1.reverseOnlyLetters("a-bC-dEf-ghIj"))
입력
"a-bC-dEf-ghIj"
출력
"j-Ih-gfE-dCba"