|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目链接:https://codeforces.com/problemset/problem/978/B
- #include <bits/stdc++.h>
- using namespace std;
- int n,sum=0;//表示操作数
- string s;
- int main()
- {
- cin>>n;
- cin>>s;
- vector<int>a;
- for(int i=0,j=0;i<s.size();i++)
- {
- while(j<s.size()&&s[j]=='x')j++;
- a.push_back(j-i-1);
- i=j-1;
- }
- for(auto i:a)
- {
- if(i>3)sum+=i-2;
- else if(i==3)sum+=1;
-
- }
- cout<<sum<<endl;
-
-
-
- }
复制代码
我双指针写的不对
- #include <bits/stdc++.h>
- using namespace std;
- int n,sum=0;//表示操作数
- string s;
- int main()
- {
- cin>>n;
- cin>>s;
- vector<int>a;
- for(int i=0,j=0;i<s.size();i++, j++)
- {
- while(j<s.size()&&s[j]=='x')j++; // 这个循环结束后,a[j]的值将不是'x'
- a.push_back(j-i); // 好比 "xxxiii",上一条语句执行后 i 的值是 0,j 的值是 3,很明显要添加的是 j-i
- i=j; // 此时 i 与 j 直接到了同一位置,开启下一轮循环
- }
- for(int i=0; i<a.size(); ++i) //我的编译器不支持 auto ,抱歉暂时改了
- {
- //if(a[i]>3)sum+=a[i]-2;
- //else if(a[i]==3)sum+=1; //可以合并
- if(a[i]>=3) sum += (a[i]-2);
- }
- cout<<sum<<endl;
- }
复制代码
|
|