zoukankan      html  css  js  c++  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哦。
     * @author L_Sivan
     */

    先来分析下题目,首先必须要区分大小写和数字了,区分的话,上一篇博客已经提到了,剩下的就是大写转变为小写,小写变数字,其实就是这么简单。下面是代码:

     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     }
  • 相关阅读:
    锁和监视器之间的区别 – Java并发
    实现Runnable接口和继承Thread类之间的区别
    如何使用wait(), notify() and notifyAll() – Java
    HashMap如何工作
    使用hashCode()和equals()方法
    Compare and Swap [CAS] 算法
    对象级别锁 vs 类级别锁 – Java
    solr的访问权限管理及ubuntu下iptables的设置
    mysql 字符串字段中查找非ascii字符
    tensorflow学习——调试ctc的两个bug
  • 原文地址:https://www.cnblogs.com/Xw-liang/p/5229229.html
Copyright © 2011-2022 走看看