题解
2024-06-26 16:47:56
发布于:广东
9阅读
0回复
0点赞
模拟
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
char a[100005];
vector <int> v;//记录
int n;
void del(int i){//删除
for(; i <= n; i++) a[i] = a[i + 1];
n--;
}
int main(){
cin >> n;
scanf("%s", a + 1);
int ct = 0;
for(int i = 1; i <= n; i++) ct += (a[i] == 'a');
while(ct){
bool flag = 0;
for(int i = 1; i < n; i++){
if(a[i] < a[i + 1]){//如果字符小于后一个就删掉
flag = 1;
if(a[i] == 'a') ct--;
del(i);
break;
}
}
if(!flag){//没有就删最后一个
if(a[n] == 'a') ct--;
del(n);
}
v.push_back(ct);
}
cout << v.size() << endl;
for(int i = 0; i < v.size(); i++){
cout << v[i] << ' ';
}
return 0;
}
这里空空如也
有帮助,赞一个