題目:
題解:
- 滑動窗口,當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;
}
};