0
点赞
收藏
分享

微信扫一扫

外观数列

_刘彦辉 2022-01-27 阅读 40
leetcode

这题用到了双指针,我们通过双指针,来得到每一段相同的序列。

思想:我们第n个字符串是由第n-1个字符串得到的,第一个字符串知道,我们要进行n-1次迭代才能得到第n个字符串,而我们怎么求字符串中每一段相等且连续的序列呢,想必大家都知道了,直接用双指针,对字符串进行操作。

具体需要怎么操作呢,一个快慢指针,一个指针不动,另一个指针当与这个指针指向的值相同时就++,直到不行同为止,再把这个指针的位置更新成当前指针

步骤:
1.先定义初始字符串s=“1”

2.循环进行n-1次迭代,定义当前字符串t

3.双指针求当前字符串一个快慢指针,一个指针不动,另一个指针当与这个指针指向的值相同时就++,直到不行同为止,再把这个指针的位置更新成当前指针,知道j遍历完字符串停止

4.使当前字符串等于s

class Solution {
public:
    string countAndSay(int n) {
      string s="1";
      for(int i=0;i<n-1;i++){
          string t;
          for(int j=0;j<s.size();){
              int k=j+1;
              while(k<s.size()&&s[k]==s[j])k++;
              t+=to_string(k-j)+s[j];
              j=k;
          }
          s=t;
      }
      return s;
    }
};
举报

相关推荐

0 条评论