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

Python에서 Double, Reverse 및 Swap 후 패턴

<시간/>

숫자 n이 있고 시퀀스에서 n번째 값을 찾지 못했다고 가정합니다. 순서는 아래와 같습니다 -

  • xxy
  • xxxxxy
  • yxxyxx
  • xyyxyy
  • xyyxyyxyyxyy
  • ...

다음 값을 생성하려면 xxy를 첫 번째 항으로 시작하는 다음 규칙을 따라야 합니다. -

  • 패턴이 시작되면 두 배로 늘리십시오(문자열을 자체적으로 연결).

  • 마지막 작업이 두 배가 되었을 때 반대로 하십시오.

  • 마지막 작업이 역전될 때 모든 xs를 ys로 또는 그 반대로 교환하십시오.

  • 이 단계를 반복합니다.

따라서 입력이 n =5와 같으면 출력은 "yyxyyxyyxyyx"가 됩니다.

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

  • i :=0
  • ret :="xxy"
  • 내가
  • i mod 3이 0과 같으면
    • ret :=ret + ret
  • 그렇지 않으면 i mod 3이 1과 같을 때
    • ret :=인덱스 0에서 end-1까지 ret의 하위 배열
  • 그렇지 않으면
    • new_stringy :=빈 문자열
    • ret의 각 c에 대해 다음을 수행합니다.
      • c가 "x"와 같으면
        • new_stringy :=new_stringy "y" 연결
      • 그렇지 않으면
        • new_stringy :=new_stringy "x" 연결
    • ret :=new_stringy
  • 나는 :=나는 + 1
  • 반환
  • 이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    예시

    class Solution:
       def solve(self, s):
          i = 0
          ret = "xxy"
          while i < s:
             if i % 3 == 0:
                ret += ret
             elif i % 3 == 1:
                ret = ret[::-1]
             else:
                new_stringy = ""
                for c in ret:
                   if c == "x":
                      new_stringy += "y"
                   else:
                      new_stringy += "x"
                   ret = new_stringy
                i += 1
          return ret
    ob = Solution()
    print(ob.solve(5))

    입력

    5

    출력

    yyxyyxyyxyyx