
思路: 可以按照ABC 的顺序遍历三次。把细节搞清楚,思路出来了,代码要写对。
一个坑是最后一个点的位置。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
int i=0;
while(i<(int)s.size() && s[i]=='A') i++;
while(i<(int)s.size() && s[i]=='B') i++;
while(i<(int)s.size() && s[i]=='C') i++;
if(i==((int)s.size())) cout<<"Yes";
else {
cout<<"No";
}
}
2.

思路: 使用一个 ne 数组来存储这个数后面的数。
比赛时,我还使用了队列进行粗储存,其实没必要,使用一个变量进行输出即可。
#include <bits/stdc++.h>
using namespace std;
int ne[300010];
int main()
{
int n;
cin>>n;
int pos=0;
for (int i=1;i<=n;i++){
int x;
cin>>x;
if(x!=-1) ne[x]=i;
else pos=i;
}
for (int i=1;i<=n;i++){
cout<<pos<<" ";
pos=ne[pos];
}
cout<<endl;
}
文章讲述了在C++编程中,如何按照ABC顺序遍历字符串并处理特定条件,以及使用ne数组存储后续数字并利用队列优化的方法。

790

被折叠的 条评论
为什么被折叠?



