题目描述

解题思路
初始化字符串 init 为 “1”,作为外观数列的第一项。
 通过循环迭代生成外观数列的下一项,循环次数为 n-1,因为已经初始化了第一项。
 在每次迭代中,通过两个指针 pos 和 start 来遍历当前项 init,pos 指向当前字符,start 指向当前连续字符序列的起始位置。
 在内层的两个 while 循环中,pos 从 start 开始向后移动,直到遇到不同的字符或者到达字符串末尾。
 每次遇到不同的字符时,将当前连续字符序列的长度(pos - start)和该字符本身(init[start])拼接到 curr 字符串中。
 更新 start 为当前 pos 的值,以便下一次计算下一个连续字符序列的长度。
 将生成的新字符串 curr 赋值给 init,继续下一轮迭代。
 最终返回生成的外观数列第 n 项的字符串表示。
解题代码
class Solution:
 def countAndSay(self, n: int) -> str:
 init=“1”
 for i in range(n-1):
 curr=“”
 pos=0
 start=0
 while pos<len(init):
 while pos<len(init) and init[pos]==init[start]:
 pos+=1
 curr+=str(pos-start)+init[start]
 start=pos
 init=curr
 return init