题目:
「外观数列」是一个数位字符串序列,由递归公式定义:
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)
代码理解示意图