题解 | #字符串加密#

字符串加密

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;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务