PAT (Advanced Level) 1112. Stucked Keyboard (20)

时间:2022-05-15 15:46:59

找出一定没问题的字符(即一连串的额字符x个数能被k整除的),剩下的字符都是可能有问题的。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std; int k;
char s[];
int flag[];
vector<int>ans;
char out[];
int sz;
int dd[]; int main()
{
memset(dd,,sizeof dd);
memset(flag,,sizeof flag);
scanf("%d",&k);
scanf("%s",s);
int len=strlen(s); int L=;
while()
{
int R;
for(int i=L; s[i]; i++)
{
if(s[i]==s[L]) R=i;
else break;
}
if((R-L+)%k!=) flag[s[L]]=;//一定不破
L=R+;
if(L>=len) break;
}
memset(out,,sizeof out);
sz=;
int p=;
while()
{
if(p>=len) break;
if(flag[s[p]]==)
{
out[sz++]=s[p];
p++;
}
else
{
out[sz++]=s[p];
ans.push_back(s[p]);
p=p+k; }
}
for(int i=; i<ans.size(); i++)
if(dd[ans[i]]==)
{
dd[ans[i]]=;
printf("%c",ans[i]);
} printf("\n%s\n",out);
return ;
}