Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm số hạng thứ n trong Trình tự Nhìn và Nói bằng Python

Giả sử chúng ta có một số n, chúng ta phải tạo ra số hạng thứ n trong chuỗi "Nhìn và Nói". Đây là một chuỗi có một số thuật ngữ giống như bên dưới -

  • 1
  • 11
  • 21
  • 1211
  • 111221

Chuỗi sẽ được đọc giống như

  • 1 (Một)
  • 11 (Một 1) Vì vậy, hãy đọc 1 trước đó và nói “Một 1”
  • 21 (Hai 1) Vì vậy, hãy đọc 11 phần trước và nói “Hai 1”
  • 1211 (Một 2 một 1) Vì vậy, hãy đọc phần 21 trước và nói “Một 2 một 1”
  • 111221 (Một 1 một 2 hai 1) Vì vậy, hãy đọc 1211 trước đó và nói “Một 1 một 2 hai 1”

Giả sử chúng ta có một số n, 1 <=n <=30, sau đó chúng ta phải tạo ra số hạng thứ n. Để giải quyết điều này, chúng ta sẽ làm theo cách tiếp cận này -

  • set s:=“1”
  • nếu n =1, thì trả về s
  • for i:=2 to n + 1
    • j:=0
    • temp:=chuỗi trống
    • curr =chuỗi rỗng và đếm:=0
    • while j
    • nếu curr là chuỗi rỗng, thì
      • curr:=s [j], count:=1 và tăng j thêm 1
    • else nếu curr là s [j], thì
      • tăng số lượng và j lên 1
    • nếu không:
      • temp:=temp + count as string + curr
      • curr =chuỗi trống
      • số lượng:=0
  • temp:=temp + count as string + curr
  • trả lại s
  • Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    Ví dụ

    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))

    Đầu vào

    5

    Đầu ra

    "111221"