ภาพรวม
โจทย์สร้างลำดับสตริงตามกฎซ้ำซ้อน 3 ขั้นตอน เริ่มจาก "xxy":
- Double: คูณสตริงด้วย 2 (ต่อท้ายตัวเอง)
- Reverse: กลับลำดับสตริง
- Swap: สลับ x ↔ y ทุกตัว
ทำซ้ำ 3 ขั้นตอนนี้ไปเรื่อยๆ
ลำดับตัวอย่าง
| n | ค่า | ขั้นตอน |
|---|---|---|
| 0 | xxy | เริ่มต้น |
| 1 | xxyxxy | Double |
| 2 | yxxyxx | Reverse |
| 3 | xyyxyy | Swap |
| 4 | xyyxyyxyyxyy | Double |
| 5 | yyxyyxyyxyyx | Reverse |
โค้ด Python
class Solution:
def solve(self, s):
i = 0
ret = "xxy"
while i < s:
if i % 3 == 0:
ret += ret # Double
elif i % 3 == 1:
ret = ret[::-1] # Reverse
else:
new_stringy = ""
for c in ret: # Swap x↔y
if c == "x":
new_stringy += "y"
else:
new_stringy += "x"
ret = new_stringy
i += 1
return ret
ob = Solution()
print(ob.solve(5))
การทำงานสำหรับ n=5
- i=0 (Double): "xxy" → "xxyxxy"
- i=1 (Reverse): "xxyxxy" → "yxxyxx"
- i=2 (Swap): "yxxyxx" → "xyyxyy"
- i=3 (Double): "xyyxyy" → "xyyxyyxyyxyy"
- i=4 (Reverse): "xyyxyyxyyxyy" → "yyxyyxyyxyyx"
- i=5 (Swap): ไม่ทำ เพราะ i < 5 จบที่ i=4
ผลลัพธ์
yyxyyxyyxyyx