算法刷題-簡單密碼-JAVA

0x00 引言

爲獲取一個良好的算法思維,以及不再成爲一個腳本小子,爭取每天一道算法題,培養自己的邏輯思維,溫顧各類型語言語法知識。

題解只寫自己理解的解法,其他解法不再增加。題目與解析均在代碼裏面。

0x01 難度等級

簡單

0x02 代碼

package 簡單;

import java.util.Scanner;

/*
*
描述
現在有一種密碼變換算法。
九鍵手機鍵盤上的數字與字母的對應:
* 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 。
是X的ascii碼值加32再+1(a是97 A是65,所以是差變成小a需要加32),因爲往後移動了一位 ,需要再加1
*
數字和其它的符號都不做變換。
數據範圍: 輸入的字符串長度滿足 1 \le n \le 100 \1≤n≤100
輸入描述:
輸入一組密碼,長度不超過100個字符。

輸出描述:
輸出密碼變換後的字符串

示例1
輸入:
YUANzhi1987

輸出:
zvbo9441987
*
*
*
* */
public class 簡單密碼 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        Scanner s = new Scanner(System.in);
        String s1 = s.nextLine();
        char[] m=new char[s1.length()];
        for (int i = 0; i < s1.length(); i++) {
            m[i]=(char)getI(s1.charAt(i));
//            System.out.println(m[i]);
        }
//        System.out.println("------------");
        for (int i = 0; i < m.length; i++) {
            System.out.print(m[i]);
        }
    }

    public static int getI(char i) {
            if (i >='A' && i <='Y') {
                return (char) (i + 33);
            } else if (i == 'Z') {
                return 'a';
            } else if(i >='a' && i <='z'){
                switch (i) {
                    case 'a':
                    case 'b':
                    case 'c':
                        return '2';
                    case 'd':
                    case 'e':
                    case 'f':
                        return '3';
                    case 'g':
                    case 'h':
                    case 'i':
                        return '4';
                    case 'j':
                    case 'k':
                    case 'l':
                        return '5';
                    case 'm':
                    case 'n':
                    case 'o':
                        return '6';
                    case 'p':
                    case 'q':
                    case 'r':
                    case 's':
                        return '7';
                    case 't':
                    case 'u':
                    case 'v':
                        return '8';
                    default:
                        return '9';
                }
            }else {
                return i;
            }
        }

}

0x03 算法思想

(1)考查對Ascii碼錶的瞭解

(2)考查對switch/case穿透的使用

0x04 運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章