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

โปรแกรมค้นหาคำที่ n ใน Look and Say Sequence ใน Python


สมมติว่าเรามีตัวเลข n เราต้องสร้างพจน์ที่ n ในลำดับ "Look and Say" นี่คือลำดับที่มีคำศัพท์ไม่กี่คำด้านล่าง -

  • 1
  • 11
  • 21
  • 1211
  • 111221

สตริงจะถูกอ่านเช่น

  • 1 (หนึ่ง)
  • 11 (หนึ่ง 1) อ่าน 1 ก่อนหน้าแล้วพูดว่า "หนึ่ง 1"
  • 21 (สอง 1) ดังนั้น อ่าน 11 ก่อนหน้าแล้วพูดว่า "สอง 1"
  • 1211 (หนึ่ง 2 ต่อ 1) อ่าน 21 อันที่แล้วแล้วพูดว่า "หนึ่ง 2 หนึ่ง 1"
  • 111221 (หนึ่ง 1 1 2 2 1) อ่าน 1211 ก่อนหน้าแล้วพูดว่า "หนึ่ง 1 หนึ่ง 2 สอง 1"

สมมติว่าเรามีตัวเลข n, 1 <=n <=30 จากนั้นเราต้องสร้างเทอมที่ n เพื่อแก้ปัญหานี้ เราจะปฏิบัติตามแนวทางนี้ -

  • ตั้งค่า s :=“1”
  • ถ้า n =1 ให้คืนค่า s
  • สำหรับ i :=2 ถึง n + 1
    • j :=0
    • temp :=สตริงว่าง
    • curr =สตริงว่างและนับ :=0
    • ในขณะที่ j <ความยาวของ s ทำ
      • ถ้าcurrเป็นสตริงว่าง
        • curr :=s[j] นับ :=1 และเพิ่ม j ขึ้น 1
      • มิฉะนั้น ถ้า curr คือ s[j] แล้ว
        • เพิ่มจำนวนและ j ขึ้น 1
      • มิฉะนั้น:
        • temp :=temp + นับเป็น string + curr
        • curr =สตริงว่าง
        • นับ :=0
    • temp :=temp + นับเป็น string + curr
  • คืนสินค้า

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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"