牛客華爲在線編程題----簡單密碼破解

首先題目以下:算法

/**
 * 
 * 假設淵子原來一個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哦。
 * @author L_Sivan
 */

先來分析下題目,首先必需要區分大小寫和數字了,區分的話,上一篇博客已經提到了,剩下的就是大寫轉變爲小寫,小寫變數字,其實就是這麼簡單。下面是代碼:spa

 1 public class KillPassword {
 2 
 3         public static void main(String[] args){
 4             Scanner sc = new Scanner(System.in);
 5             String password = sc.nextLine();
 6             char[] charArray = password.toCharArray();
 7             char[] newPasswordArray = new char[charArray.length];
 8             for(int i  = 0;i<charArray.length;i++){
 9                 int num = judgeType(charArray[i]);
10                 if(num == 1){
11                     char c = big2Small(charArray[i]);
12                     newPasswordArray[i] = c;
13                 }else if(num == 0){
14                     char c = small2Num(charArray[i]);
15                     newPasswordArray[i] = c;
16                 }else{
17                     newPasswordArray[i] = charArray[i];
18                 }
19             }
20             System.out.println(newPasswordArray);
21         }
22         
23         public static int judgeType(char c){
24             
25             if(c >= 'A' && c <= 'Z'){
26                 return 1;
27             }else if(c >= 'a' && c<= 'z'){
28                 return 0;
29             }else{
30                 return 10;
31             }
32         }
33         
34         public static char small2Num(char c){
35             switch(c){
36                 case 'a':
37                 case 'b':
38                 case 'c':
39                     return '2';
40                 case 'd':
41                 case 'e':
42                 case 'f':
43                     return '3';
44                 case 'g':
45                 case 'h':
46                 case 'i':
47                     return '4';
48                 case 'j':
49                 case 'k':
50                 case 'l':
51                     return '5';
52                 case 'm':
53                 case 'n':
54                 case 'o':
55                     return '6';
56                 case 'p':
57                 case 'q':
58                 case 'r':
59                 case 's':
60                     return '7';
61                 case 't':
62                 case 'u':
63                 case 'v':
64                     return '8';
65                 case 'w':
66                 case 'x':
67                 case 'y':
68                 case 'z':
69                     return '9';
70                 default:
71                     return '0';
72             }
73         }
74         public static char big2Small(char c){
75             char[] small = {
76                 'a','b','c','d','e','f','g','h',
77                 'i','j','k','l','m','n','o','p',
78                 'q','r','s','t','u','v','w','x',
79                 'y','z'
80             };
81             char[] big = {
82                 'A','B','C','D','E','F','G','H',
83                 'I','J','K','L','M','N','O','P',
84                 'Q','R','S','T','U','V','W','X',
85                 'Y','Z'
86             };
87             for(int i = 0;i<big.length;i++)
88                 if(c == big[i]){
89                     if(c == 'Z')
90                         return 'a';
91                     else
92                         return small[i + 1];
93                 }
94             return '0';
95         }
96     }
相關文章
相關標籤/搜索