题解 | #简单密码#

简单密码

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;
}
全部评论
#include <stdio.h> #include <string.h> int main() { char str[100]={0}; int i=0; while (scanf("%s", str) != EOF) { for(i=0;i<strlen>= 'A' && str[i] <= 'Z') str[i] = str[i] + 33; else if(str[i] >= 'a' && str[i] <= 'z') str[i] = '2' + (str[i] - 'a') / 3; } printf("%s\n", str); } return 0; }</strlen></string.h></stdio.h>
点赞 回复 分享
发布于 02-24 15:44 四川
兄弟,大智若愚!(正向)
点赞 回复 分享
发布于 2023-04-09 21:14 山西
帮你修改了一下: #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
5VQ6HnjWx8GCg6这个用例没通过,为啥呀
点赞 回复 分享
发布于 2022-06-12 19:27
你的代码很好理解,就是超时了
点赞 回复 分享
发布于 2022-05-02 21:49

相关推荐

05-23 19:02
吉林大学 Java
点赞 评论 收藏
分享
评论
23
6
分享

创作者周榜

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