本文最后更新于238 天前,其中的信息可能已经过时,如有错误请发送邮件到2446865563@qq.com
1.题目基本信息
1.1.题目描述
「外观数列」是一个数位字符串序列,由递归公式定义:
-
countAndSay(1) = "1"
-
countAndSay(n) 是 countAndSay(n-1) 的行程长度编码。
行程长度编码(RLE)是一种字符串压缩方法,其工作原理是通过将连续相同字符(重复两次或更多次)替换为字符重复次数(运行长度)和字符的串联。例如,要压缩字符串 "3322251" ,我们将 "33" 用 "23" 替换,将 "222" 用 "32" 替换,将 "5" 用 "15" 替换并将 "1" 用 "11" 替换。因此压缩后字符串变为 "23321511"。
给定一个整数 n ,返回 外观数列 的第 n 个元素。
1.2.题目地址
https://leetcode.cn/problems/count-and-say/description/
2.解题方法
2.1.解题思路
模拟+双指针
3.解题代码
python代码
class Solution:
def countAndSay(self, n: int) -> str:
# 思路:模拟+双指针
if n == 1:
return "1"
else:
result = ""
ans1 = self.countAndSay(n - 1)
n = len(ans1)
l, r = 0, 0
while l < n:
cnt = 0
while r < n and ans1[r] == ans1[l]:
cnt += 1
r += 1
result += f"{cnt}{ans1[l]}"
l = r
return result
4.执行结果










