字符串删减
思想:
- 使用双指针。
- 遍历字符串
s,用一个指针i从左到右扫描。 - 当遇到一个
'x'时,记录当前位置为j,然后让i继续向后走。 - 在内层循环中,当
s[i] == 'x'并且i - j == 2时(意味着从j到i这一段"xxx"被找到了),则需要删除这个子串。在此代码实现中,我们通过将计数器res加一并移动j指针来模拟删除。 - 用
res最终记录需要删除的'x'的总数量(即需要删除的子串"xxx"的个数)。
代码:
cpp
#include <bits/stdc++.h>
using namespace std;
void solve(){
int n; string s;
cin >> n >> s;
int res = 0;
for(int i = 0; i < s.size(); i ++){
if(s[i] == 'x'){
int j = i;
while(i < s.size() && s[i] == 'x'){ // 指针 j i
if(i - j == 2) res ++, j ++; // 下标 2 3 4
i ++; // s[i] x x x
} // i - j = 2 说明存在连续的 "xxx"
}
}
cout << res << endl;
}
int main(){
solve();
return 0;
}