简单密码
简单密码
绕树三匝,何枝可依。
背景:Java 在线编程机试刷题。
题目描述:
密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。
假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。
他是这么变换的,大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,。
声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。
输入描述:
输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾。
输出描述:
将这个整数以字符串的形式逆序输出。
示例1:
输入:
YUANzhi1987
输出:
zvbo9441987
Java代码:
1 import java.util.Scanner;
2
3 public class Main{
4
5 public static void main(String [] args){
6 Scanner scan = new Scanner(System.in);
7 StringBuilder sb = new StringBuilder();
8 while(scan.hasNextLine()){
9 String input = scan.nextLine();
10 int length = input.length();
11 for(int i = 0; i < length; i++){
12 char temp = input.charAt(i);
13 // case大写
14 if(Character.isUpperCase(temp)){
15 // 转小写
16 temp = Character.toLowerCase(temp);
17 if(temp == 'z'){
18 sb.append("a");
19 }else{
20 // 相邻间差1
21 int tempInt = temp + 1;
22 char tempChar = (char)tempInt;
23 sb.append(tempChar);
24 }
25 }else if(Character.isLowerCase(temp)){
26 // case小写
27 if(temp == 'a' || temp == 'b' || temp == 'c'){
28 sb.append("2");
29 }else if(temp == 'd' || temp == 'e' || temp == 'f'){
30 sb.append("3");
31 }else if(temp == 'g' || temp == 'h' || temp == 'i'){
32 sb.append("4");
33 }else if(temp == 'j' || temp == 'k' || temp == 'l'){
34 sb.append("5");
35 }else if(temp == 'm' || temp == 'n' || temp == 'o'){
36 sb.append("6");
37 }else if(temp == 'p' || temp == 'q' || temp == 'r' || temp == 's'){
38 sb.append("7");
39 }else if(temp == 't' || temp == 'u' || temp == 'v'){
40 sb.append("8");
41 }else{
42 sb.append("9");
43 }
44 }else{
45 // case数字
46 sb.append(temp);
47 }
48 }
49 }
50 System.out.print(sb.toString());
51 scan.close();
52 }
53
54 }
输出验证:
绕树三匝
何枝可依