1. 程式人生 > 其它 >Java機試題:字串加解密(大小寫轉化字元運算匹配)

Java機試題:字串加解密(大小寫轉化字元運算匹配)

描述

1、對輸入的字串進行加解密,並輸出。

2、加密方法為:

當內容是英文字母時則用該英文字母的後一個字母替換,同時字母變換大小寫,如字母a時則替換為B;字母Z時則替換為a;

當內容是數字時則把該數字加1,如0替換1,1替換2,9替換0;

其他字元不做變化。

3、解密方法為加密的逆過程。 本題含有多組樣例輸入。 資料範圍:輸入的兩個字串長度滿足,保證輸入的字串都是大小寫字母或者數字

輸入描述:

輸入說明
輸入一串要加密的密碼
輸入一串加過密的密碼

輸出描述:

輸出說明
輸出加密後的字元
輸出解密後的字元

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String str = sc.nextLine(); // 加密 encode(str); // 解密 String str1 = sc.nextLine(); decode(str1); } }
private static void decode(String str) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < str.length(); i++) { String temp = String.valueOf(str.charAt(i)); if(temp.matches("[a-zA-Z]+")) { if(str.charAt(i) == 'A') { sb.append(
'z'); } else if(str.charAt(i) == 'a') { sb.append('Z'); } else { char info = (char) (str.charAt(i) - 1); if(String.valueOf(info).matches("[a-z]")) { sb.append(String.valueOf(info).toUpperCase()); } else { sb.append(String.valueOf(info).toLowerCase()); } } } else { if(str.charAt(i) == '0') { sb.append('9'); } else { char info = (char) (str.charAt(i) - 1); sb.append(info); } } } System.out.println(sb.toString()); } private static void encode(String str) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < str.length(); i++) { String temp = String.valueOf(str.charAt(i)); if(temp.matches("[a-zA-Z]")) { if(str.charAt(i) == 'Z') { sb.append('a'); } else if(str.charAt(i) == 'z') { sb.append('A'); } else { char info = (char) (str.charAt(i) + 1); if(String.valueOf(info).matches("[a-z]")) { sb.append(String.valueOf(info).toUpperCase()); } else { sb.append(String.valueOf(info).toLowerCase()); } } } else { if(str.charAt(i) == '9') { sb.append('0'); } else { char info = (char) (str.charAt(i) + 1); sb.append(info); } } } System.out.println(sb.toString()); } }

題目來源:牛客網