题解 | #简单密码#

简单密码

http://www.nowcoder.com/practice/7960b5038a2142a18e27e4c733855dac

俺太笨了,只会枚举:

#include<stdio.h>
int main(){
    char c;
    while(~scanf("%c",&c)){
        if(c=='Z')
            printf("a");
        else if('A'<=c&&c<'Z')
            printf("%c",c+33);
        else if('a'<=c&&c<='z')
        {
            if('a'<=c&&c<='c') printf("2");
            if('d'<=c&&c<='f') printf("3");
            if('g'<=c&&c<='i') printf("4");
            if('j'<=c&&c<='l') printf("5");
            if('m'<=c&&c<='o') printf("6");
            if('p'<=c&&c<='s') printf("7");
            if('t'<=c&&c<='v') printf("8");
            if('w'<=c&&c<='z') printf("9");
        }
        else printf("%c",c);
    } printf("\n");
}

讨论区学到另一种思路:定义两个字符串,一个是输入的数据集,一个是输出的数据集,每个位置一一对应。对每次输入的数据,在输入数据集中进行查找,若查找成功 则返回输出数据集中对应位置上的数据;若查找失败,则直接输出这个数据(即数字和其他的符号都不做变换):

const string dict1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
const string dict2="bcdefghijklmnopqrstuvwxyza22233344455566677778889999";
 
char Char_Change(char a){
    for(int i=0;i<dict1.size();i++)
        if(dict1[i]==a) return dict2[i];
    return a;
}
全部评论
你的代码很好理解,就是超时了
点赞
送花
回复
分享
发布于 2022-05-02 21:49
5VQ6HnjWx8GCg6这个用例没通过,为啥呀
点赞
送花
回复
分享
发布于 2022-06-12 19:27
蔚来
校招火热招聘中
官网直投
帮你修改了一下: #include<stdio.h> int main(){ char c; while(~scanf("%c",&c)){ if(c=='Z') c='a'; else if('A'<=c&&c<'Z') c+=33; else if('a'<=c&&c<='z') { switch(c) { case 'a': case 'b': case 'c':c='2';break; case 'd': case 'e': case 'f':c='3';break; case 'g': case 'h': case 'i':c='4';break; case 'j': case 'k': case 'l':c='5';break; case 'm': case 'n': case 'o':c='6';break; case 'p': case 'q': case 'r': case 's':c='7';break; case 't': case 'u': case 'v':c='8';break; case 'w': case 'x': case 'y': case 'z':c='9';break; } } printf("%c",c); } }</stdio.h>
点赞
送花
回复
分享
发布于 2022-07-19 00:04
兄弟,大智若愚!(正向)
点赞
送花
回复
分享
发布于 2023-04-09 21:14 山西

相关推荐

18 6 评论
分享
牛客网
牛客企业服务