一、题目解析

1、替换的方法:“33”用“23”替换,即找到相同的数,前一位为相同数的数量,后一位为相同的数
2、给定n,需要返回外观数列的第n个元素
二、算法原理
由于需要统计相同元素的数目,所以可以使用双指针来统计数目
解法:模拟+双指针

借助双指针统计数目后,按照规则加入到新的字符串中,并以新的字符串继续进行转换。对于本题right可以越界原因:1、双指针只用于统计数量;2、right指针不会访问ret字符串
三、代码示例
class Solution {
public:
string countAndSay(int n)
{
string ret = "1";
if(n == 1) return "1";
n -= 1;
while(n--)
{
string s;
for(int left = 0,right = 0;right<=ret.size();right++)
{
if(ret[left] != ret[right])
{
int count = right - left;
s += to_string(count);
s += ret[left];
left = right;
}
}
ret = s;
}
return ret;
}
};
to_string作用:将整形转化为string

看到最后,如果对您有所帮助,还请点赞、收藏和关注,我们下期再见!