题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
#include <stdio.h> #include<string.h> char zm[26]={0}; int xtzm(char c,char *jm) { int i=0; while(c!=jm[i]) { i++; if(i>=26) break; } return i; } int main() { char a[100]={0}, b[100]={0}; int i,j=0,k; for(i=0;i<26;i++) zm[i]='a'+i; char jm[26]={0}; strcpy(jm, zm); while (scanf("%s %s", &a, &b) != EOF) { // 注意 while 处理多个 case // 64 位输出请用 printf("%lld") to for(i=0;a[i]!='\0';i++) if(a[i]>='A'&&a[i]<='Z') a[i]+=32; k=i; int x; for(i=0;i<k;i++) { jm[i-j]=a[i]; x=xtzm(a[i],jm); if(x<i-j) j++; } k-=j; char ch='a'; j=0; for(;ch<='z';ch++) { x=xtzm(ch,jm); if(x>k||x==26) { jm[k+j]=ch; j++; } } for(i=0;b[i]!='\0';i++) { if(b[i]>='a'&&b[i]<='z') { x=b[i]-'a'; printf("%c",jm[x]); } else { x=b[i]-'A'; printf("%c",jm[x]-32); } } } return 0; }