一、题目解析

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

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