题解 | #字符串加解密#
字符串加解密
https://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String toEncode = in.nextLine();
String toDecode = in.nextLine();
System.out.println(encode(toEncode));
System.out.println(decode(toDecode));
}
/**
* 0-48 9-57 A-Z是65-90 a-z是97-122
*
* @param str
* @return
*/
private static String encode(String str) {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0, len = str.length(); i < len; i++) {
char c = str.charAt(i);
int intC = (int) c;
// 如果是数字就加1
if (intC > 47 && intC < 57) {
intC++;
stringBuffer.append((char) intC);
continue;
}
// 特殊的9变0
if (intC == 57) {
intC = 48;
stringBuffer.append((char) intC);
continue;
}
// 大写字母变小写并加一位
if (intC > 64 && intC < 90) {
intC = intC + 32 + 1;
stringBuffer.append((char) intC);
continue;
}
// 特殊的Z变a
if (intC == 90) {
intC = 97;
stringBuffer.append((char) intC);
continue;
}
// 小写字母变大写并加一位
if (intC > 96 && intC < 122) {
intC = intC - 32 + 1;
stringBuffer.append((char) intC);
continue;
}
// 特殊的z变A
if (intC == 122) {
intC = 65;
stringBuffer.append((char) intC);
}
}
return stringBuffer.toString();
}
/**
* 0-9是48-57 A-Z是65-90 a-z是97-122
* @param str
* @return
*/
private static String decode(String str) {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0, len = str.length(); i < len; i++) {
char c = str.charAt(i);
int intC = (int) c;
// 如果是数字就加1
if (intC > 48 && intC < 58) {
intC--;
stringBuffer.append((char) intC);
continue;
}
// 特殊的0变9
if (intC == 48) {
intC = 57;
stringBuffer.append((char) intC);
continue;
}
// 大写字母变小写并减一位 A-Z是65-90 a-z是97-122
if (intC > 65 && intC < 91) {
intC = intC + 32 - 1;
stringBuffer.append((char) intC);
continue;
}
// 特殊的Z变a
if (intC == 65) {
intC = 122;
stringBuffer.append((char) intC);
continue;
}
// 小写字母变大写并加一位
if (intC > 97 && intC < 123) {
intC = intC - 32 - 1;
stringBuffer.append((char) intC);
continue;
}
// 特殊的z变A
if (intC == 97) {
intC = 90;
stringBuffer.append((char) intC);
}
}
return stringBuffer.toString();
}
}
查看20道真题和解析
