华为机试第二十一题: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); } }
下一篇:
我的算法题——蓝桥杯校选赛