一、題目解析

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

看到最后,如果對您有所幫助,還請點贊、收藏和關注,我們下期再見!