原题链接:4993. FEB - AcWing题库
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
getchar();
char s[n+1];
gets(s);
int flag=0;
for(int i=0;i<n;i++){
if(s[i]!='F'){
flag=1;
break;
}
}
if(flag==0){
printf("%d\n",n);
for(int i=0;i<n;i++){
printf("%d\n",i);
}
}
else{
char str[n+1];
int l=0,r=n-1,max=0,min=0;
strcpy(str, s);
str[n] = '\0';
while(s[l]=='F') {
l++;
}
while(s[r]=='F'){
r--;
}
for(int i=l;i<=r;i++){
if (str[i] == 'F') {
if (str[i - 1] == 'B') {
str[i] = 'E';
}
else str[i] = 'B';
}
if(i>l&&str[i]==str[i - 1]) {
min++;
}
}
strcpy(str, s);
str[n] = '\0';
for(int i=l;i<=r;i++){
if(str[i]=='F'){
str[i]=str[i-1];
}
if(i>l&&str[i]==str[i-1]){
max++;
}
}
int res=l+n-1-r,d = 2;
if (res) {
max += res, d = 1;
}
printf("%d\n", (max - min)/d+1);
for (int i=min;i<=max;i+=d) {
printf("%d\n", i);
}
}
return 0;
}