描述

分析
这个题花了我半天时间才弄明白是什么意思。(没看到下面有两条提示)
下一个数字的报数实际上就是由上一个报数生成的。
例如:
1 的报数是 1(1x1)
2 的报数是 11(2x1)
3 的报数是 21(1X2,1X1)
4 的报数是1211 …
代码
class Solution {
public:
string countAndSay(int n) {
string pre = "1";
for (int i = 1;i < n;i++) {
string new_str;
int len = pre.length();
for (int j = 0;j < len;) {
int k = j, cnt = 0;
while (k < len && pre[k] == pre[j]) { // 读取连续数字的个数
k++;
cnt++;
}
new_str += to_string(cnt) + pre[j];
j += cnt;
}
pre = new_str;
}
return pre;
}
};
本文深入探讨了一种独特的报数序列算法,通过实例演示了如何从初始数字开始生成后续序列。详细介绍了算法的实现过程,包括如何计算连续相同数字的数量,并将其转化为序列中的元素。
510

被折叠的 条评论
为什么被折叠?



