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
- nếu curr là chuỗi rỗng, thì
- temp:=temp + count as string + curr
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"