[滑动窗口]面试题 01.06. 字符串压缩(easy)
程序员文章站
2024-03-04 08:14:11
...
题目:
题解:
- 滑动窗口,当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;
}
};
上一篇: c++中的继承
下一篇: Hibernate关联关系映射