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"
- nếu c giống với "x", thì
- ret:=new_stringy
- i:=i + 1
- nếu tôi mod 3 giống 0, thì
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