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

Python의 역 문자열 II


문자열과 정수 k가 있다고 가정하면 문자열의 시작 부분부터 계산하여 2k 문자마다 처음 k 문자를 반대로 해야 합니다. 남은 문자가 충분하지 않으면 모두 반대로 하십시오. 2k 문자 미만이지만 k 문자보다 크거나 같은 경우 처음 k 문자를 반대로 하고 나머지는 원본으로 둡니다.

따라서 입력이 "abcdefgh"이고 k =3이면 출력은 "cbadefhg"가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • l :=s의 문자 목록 만들기

  • 나는 :=k-1

  • 동안 나는

    • a :=l[인덱스 0에서 i-k+1까지]

    • b :=l[인덱스 i-k+1에서 i+1까지]

    • c :=l[인덱스 i+1에서 끝까지]

    • l :=a 연결 b[인덱스 0에서 끝까지] 연결 c

    • 나는 :=나는 + 2*k

  • l

    의 각 문자를 연결하여 문자열을 반환합니다.

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

class Solution:
   def reverseStr(self, s, k):
      l = list(s)
      i = k-1
      while i < len(l)+k:
         a = l[:i-k+1]
         b = l[i-k+1:i+1]
         c = l[i+1:]
         l = a + b[::-1] + c
         i += 2*k
      return ''.join(l)

ob = Solution()
print(ob.reverseStr("abcdefg", 3))

입력

"abcdefg", 3

출력

cbadefg