문자열과 정수 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