题解 | #字符串加密#

字符串加密

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

全部评论

相关推荐

03-28 19:11
铜陵学院 C++
有礼貌的山羊追赶太阳:太典了,连笔试都没有开始就因为HC满了而结束了,而且还卡你不让你再投其他部门的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务