Computer >> Máy Tính >  >> Lập trình >> Python

Mẫu Sau khi Nhân đôi, Đảo ngược và Hoán đổi trong Python

Giả sử chúng ta có một số n, chúng ta có ot tìm giá trị thứ n từ dãy số. Trình tự như dưới đây -

  • xxy
  • xxyxxy
  • yxxyxx
  • xyyxyy
  • xyyxyyxyyxyy
  • ...

Để tạo giá trị tiếp theo, chúng tôi phải tuân theo các quy tắc này, bắt đầu với xxy là số hạng đầu tiên -

  • Khi chúng ta ở đầu mẫu, hãy nhân đôi nó (nối chuỗi với chính nó).

  • Khi thao tác cuối cùng nhân đôi, hãy đảo ngược nó.

  • Khi thao tác cuối cùng bị đảo ngược, hãy trao đổi tất cả xs với y và ngược lại.

  • Lặp lại các bước này.

Vì vậy, nếu đầu vào là n =5, thì đầu ra sẽ là "yyxyyxyyxyyx"

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • i:=0
  • ret:="xxy"
  • while i
  • nếu tôi mod 3 giống 0, thì
    • ret:=ret + ret
  • ngược lại, khi tôi mod 3 giống với 1, thì
    • ret:=mảng con của ret từ chỉ mục 0 đến cuối 1
  • nếu không,
    • new_stringy:=chuỗi trống
    • đối với mỗi c trong ret, thực hiện
      • nếu c giống với "x", thì
        • new_stringy:=new_stringy nối "y"
      • nếu không,
        • new_stringy:=new_stringy nối "x"
    • ret:=new_stringy
  • i:=i + 1
  • trả lời lại
  • Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    Ví dụ

    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))

    Đầu vào

    5

    Đầu ra

    yyxyyxyyxyyx