一、网址链接
牛客----https://www.nowcoder.com/ta/huawei
二、题目描述
①描述
现在有一种密码变换算法。 九键手机键盘上的数字与字母的对应: 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++) {
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')
{
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\n", str);
}
}
|