#include<bits/stdc++.h>
using namespace std;
int book[50][50];
int book1[50];
char c[50][50];
char str[2000];
int main()
{
int cn=1;
while(scanf("%s",str+1)!=EOF)
{
memset(book,0,sizeof(book));
memset(book1,0,sizeof(book1));
//memset(c,'\0',sizeof(c));
//memset(str,'\0',sizeof(str));
if(str[1]=='#') break;
int len=strlen(str+1);
for(int i=1;i<=len;i++)
{ //printf("%d",i);
int flag=0,p=i,pp=i;
for(int j=i;j<=len;j++)
{
if(str[j]=='+'){flag=1;p=j;break;}
if(str[j]=='-'){flag=2;p=j;break;}
if(str[j]=='='){flag=3;p=j;break;}
}
for(int j=p;j<=len;j++)
{
if(str[j]==','){pp=j;break;}
if(j==len){pp=len+1;break;}
}
//printf("p=%d pp=%d\n",p,pp);
if(flag==3)
{
for(int j=i;j<p;j++)
for(int k=1;k<=26;k++)
book[str[j]-'A'+1][k]=0;
}
for(int j=i;j<p;j++)
for(int k=p+1;k<pp;k++)
if(flag==1||flag==3) book[str[j]-'A'+1][str[k]-'a'+1]=1;
else if(flag==2) book[str[j]-'A'+1][str[k]-'a'+1]=0;
i=pp;
}
for(int i=1;i<=26;i++)
{
int s=0;
for(int j=1;j<=26;j++)
{
if(book[i][j])
{
c[i][s++]=j-1+'a';
}
}
c[i][s]='\0';
}
//for(int i=1;i<=26;i++){printf("%s\n",c[i]);}
printf("%d:",cn++);
char ans[50];
for(int i=1;i<=26;i++)
{
if(!book1[i]&&strlen(c[i]))
{
int s=0;
ans[s++]=i-1+'A';
for(int j=i+1;j<=26;j++)
if(strlen(c[j])==0) continue;
else if(strcmp(c[i],c[j])==0)
{
book1[j]=1;ans[s++]=j-1+'A';
}
else break;
ans[s]='\0';
printf("%s%s",ans,c[i]);
}
}
printf("\n");
}
return 0;
}
Electronic Document Security
字符串
最新推荐文章于 2022-03-25 11:33:39 发布