Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาพจน์ที่ n ของลำดับ Look and Say ใน Python

ลำดับ Look and Say เริ่มจาก "1" แต่ละพจน์อธิบายพจน์ก่อนหน้า: 1, 11 (หนึ่ง 1), 21 (สอง 1), 1211 (หนึ่ง 2 หนึ่ง 1), 111221 (หนึ่ง 1 หนึ่ง 2 สอง 1)... ต้องการพจน์ที่ n (1 ≤ n ≤ 30)

ขั้นตอนการแก้ปัญหา

  1. s = "1"
  2. ถ้า n == 1 คืน s
  3. วน i จาก 2 ถึง n:
    • j = 0, temp = "", curr = "", count = 0
    • วนลูปอ่าน s:
      • ถ้า curr == "": curr = s[j], count = 1, j += 1
      • ถ้า curr == s[j]: count += 1, j += 1
      • มิฉะนั้น: temp += str(count) + curr, curr = "", count = 0
    • temp += str(count) + curr
    • s = temp
  4. คืน s

ตัวอย่างโค้ด

class Solution(object):
    def solve(self, n):
        s = "1"
        if n == 1:
            return s
        for i in range(2, n + 1):
            j = 0
            temp = ""
            curr = ""
            count = 0
            while j < len(s):
                if curr == "":
                    curr = s[j]
                    count = 1
                    j += 1
                elif curr == s[j]:
                    count += 1
                    j += 1
                else:
                    temp += str(count) + curr
                    curr = ""
                    count = 0
            temp += str(count) + curr
            s = temp
        return s

ob = Solution()
n = 5
print(ob.solve(n))

อินพุต

5

เอาต์พุต

"111221"