华为机试第二十一题:HJ21 简单密码

一、网址链接

牛客----

二、题目描述

①描述

现在有一种密码变换算法。 九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9. 而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。 数字和其它的符号都不做变换。 数据范围: 输入的字符串长度满足1<=n<=100

②输入描述

输入一组密码,长度不超过100个字符。

③输出描述

输出密码变换后的字符串

④示例一

输入: YUANzhi1987 输出: zvbo9441987

三、代码实现

①Java代码实现

import java.io.*;

public class Main {
          
   
    public static void main(String[] args) throws IOException {
          
   
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();

            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < str.length(); i++) {
          
   
                //获取第i个字符
                char c = str.charAt(i);
                //判断,处理
                if (c >= A && c < Z) {
          
   
                    c = (char) (c + b - A);
                } else if (c == Z) {
          
   
                    c = a;
                } else if (c>=a && c<=c) {
          
   
                    c = 2;
                } else if (c>=d && c<=f) {
          
   
                    c = 3;
                } else if (c>=g && c<=i) {
          
   
                    c = 4;
                } else if (c>=j && c<=l) {
          
   
                    c = 5;
                } else if (c>=m && c<=o) {
          
   
                    c = 6;
                } else if (c>=p && c<=s) {
          
   
                    c = 7;
                } else if (c>=t && c<=v) {
          
   
                    c = 8;
                } else if (c>=w && c<=z) {
          
   
                    c = 9;
                }
                sb.append(c);
            }
            System.out.println(sb.toString().trim());
    }
}

②C代码实现

#include <stdio.h>
#define MAXS 101
int main(void)
{
          
   
    int i;
    int token;
    char str[MAXS];
    while(scanf("%s", str) != EOF)
    {
          
   
        i = 0;
        while(str[i])
        {
          
   
            if(str[i] >= A && str[i] <= z) 
            if(str[i] <= Z) // up 
            {
          
   
               if(str[i] == Z) str[i] = a;
               else str[i] = str[i] + 1 +a - A;
            }
            else
            {
          
   
                if(str[i] >= a && str[i] <= r)  
                    str[i] = (str[i] -a) / 3 + 2;
                else if(str[i] == s) str[i] = 7;
                else if(str[i] >=t && str[i] <=v) str[i] = 8;
                else str[i] = 9;
            }
            ++i;
        }
        printf("%s
", str);
    }
}
经验分享 程序员 微信小程序 职场和发展