题目:
「外观数列」是一个数位字符串序列,由递归公式定义:
countAndSay(1) = "1"
countAndSay(n)
是countAndSay(n-1)
的行程长度编码。行程长度编码(RLE)是一种字符串压缩方法,其工作原理是通过将连续相同字符(重复两次或更多次)替换为字符重复次数(运行长度)和字符的串联。例如,要压缩字符串
"3322251"
,我们将"33"
用"23"
替换,将"222"
用"32"
替换,将"5"
用"15"
替换并将"1"
用"11"
替换。因此压缩后字符串变为"23321511"
。给定一个整数
n
,返回 外观数列 的第n
个元素。
示例
题目大意
来自林空语 - 力扣(LeetCode) 的理解
代码编程
class Solution {
public://使用了递归调用的方法string countAndSay(int n) {if(n==1)return "1";return ans((countAndSay(n-1)));}string ans(string s) {string s1;int i = 0;while (i < s.length()) {int j = 1; while (i + j < s.length() && s[i] == s[i + j]) {j++; }s1 += to_string(j) + s[i]; i += j; }return s1;}};
代码思路来源:七 - 力扣(LeetCode)
代码理解示意图
题目来源:38. 外观数列 - 力扣(LeetCode)