สมมติว่าเรามีสองสตริง s, t และอีกจำนวนบวก n จะได้รับ เราต้องหาผลตอบแทนเทอมที่ n ของลำดับ A โดยที่ -
- A[0] =ส
- A[1] =t
- A[n] =A[n - 1] + A[n - 2] เมื่อ n เป็นเลขคู่ มิฉะนั้น A[n] =A[n - 2] + A[n - 1]
ตัวอย่างเช่น ถ้า s ="a" และ t ="b" ดังนั้นลำดับ A จะเป็น − ["a", "b", "ba" ("a" + "b"), "bba" ( "b" + "ba"), "bbaba" ("bba" + "ba")]
ดังนั้น หากอินพุตเป็น s ="pk", t ="r", n =4 เอาต์พุตจะเป็น "rrpkrpk"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้า n เหมือนกับ 0 แล้ว
- คืนสินค้า
- มิฉะนั้นเมื่อ n เหมือนกับ 1 แล้ว
- คืนสินค้า
- a :=s, b :=t
- สำหรับฉันในช่วง 2 ถึง n ทำ
- ถ้าฉัน mod 2 เหมือนกับ 0 แล้ว
- c :=b เชื่อม a
- มิฉะนั้น
- c :=a concatenate b
- a :=b
- b :=c
- ถ้าฉัน mod 2 เหมือนกับ 0 แล้ว
- คืนค
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, s, t, n): if n == 0: return s elif n == 1: return t a = s b = t for i in range(2, n+1): if i%2 == 0: c = b + a else: c = a + b a = b b = c return c ob = Solution() print(ob.solve("pk", "r", 4))
อินพุต
"pk", "r", 4
ผลลัพธ์
rrpkrpk