先说一下报错案例吧,过了五个用例,就。。觉得好像逻辑确实没啥问题,一直改也不对,先放一放吧
#include<stdio.h>
#include<string.h>
char psd[27],vis[27],str[1005];
int main(){
while(scanf("%s %s",psd,str)!=EOF){
memset(vis,0,sizeof(vis));
int tmp,idx=0;
//密码对应
for(int i=0;psd[i]!=0;i++){
if(psd[i]>='A'&&psd[i]<='Z'){
tmp=psd[i]-'A';
}else{
tmp=psd[i]-'a';
}
if(vis[tmp]==0){
psd[idx++]='a'+tmp;
vis[tmp]=1;
}
}
for(int i=0;i<26;i++){
if(vis[i]==0){
psd[idx++]='a'+i;
}
}
for(int i=0;str[i]!=0;i++){
str[i]=psd[str[i]-'a'];
if(str[i]>='A'&&str[i]<='Z'){
str[i]+=32;
}
}
printf("%s\n",str);
}
return 0;
}
京公网安备 11010502036488号