欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[滑动窗口]面试题 01.06. 字符串压缩(easy)

程序员文章站 2024-03-04 08:14:11
...

题目:
[滑动窗口]面试题 01.06. 字符串压缩(easy)
题解:

  • 滑动窗口,当s[i]!=s[j]时,直接将j指针移动到i指针的位置,缩小窗口;当s[i]==s[j]时,i指针右移,扩大窗口。

代码如下:

class Solution {
public:
    //解法:滑动窗口,当s[i]!=s[j]时,直接将j指针移动到i指针的位置,缩小窗口;当s[i]==s[j]时,i指针右移,扩大窗口
    string compressString(const string& S) {
        string res="";
        int i=0,j=0,n=S.size();
        while(i<n){
            if(i==n-1&&S[j]==S[i]){
                res.push_back(S[j]);
                res+=to_string(i-j+1);//窗口大小i-j+1
            }
            if(S[i]!=S[j]){
                res.push_back(S[j]);
                res+=to_string(i-j);//窗口大小i-j
                j=i;
            }
            else i++;
        }
        return res.size()>=n?S:res;
    }
};
相关标签: 程序员面试金典