Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 문자만 뒤집기

<시간/>

문자열 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만큼 늘립니다.
  • 반환 문자열
  • 예시

    이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    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"