题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
#include <stdio.h>
int main() {
char str1[100];//key
while(gets(str1) != '\0'){
int len1,len=0;
len1 = strlen(str1);
char str2[100];
char str[100];//存放无重复字符的key
gets(str2);//需要转换的字符串
int len2;
len2 = strlen(str2);
int hash[26] = {0};//记录K有哪些字母
char biao1[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};//打完也没想明白自己为什么一个个敲出来
for(int i=0;i<len1;i++){
if(str1[i]>='a'&&str1[i]<='z'){
str1[i] -= 32;
}
if(hash[str1[i]-'A'] == 0){
str[len++] = str1[i];
}
hash[str1[i]-'A']=1;
}
char biao2[26];//替代后的baio
int k=0;
for(int i=0;i<len;i++){
biao2[i] = str[i];
}
for(int i=len;i<26;){
for(int j=0;j<26;j++){
if(hash[j] == 0){
biao2[i] = j + 'A';
i++;
}
}
}
for(int i=0;i<len2;i++){
if(str2[i]>='a' && str2[i]<='z'){
str2[i] -= 32;
printf("%c",biao2[str2[i]-'A']+32);
}else if(str2[i]>='A' && str2[i]<='Z'){
printf("%c",biao2[str[i]-'A']);
}else{
printf("%c",str2[i]);
}
}
}
return 0;
}

美的集团公司福利 819人发布