题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
test36();
}
private static void test36() {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
// 获取密钥
String str1 = in.nextLine();
int[] n = new int[str1.length()];
char[] c = str1.toCharArray();
for (int i = 0; i < str1.length(); i++) {
n[i] = 1;
for (int j = 0; j < i; j++) {
if (c[i] == c[j]) {
n[i] += 1;
}
}
}
// 去重之后的字母表
StringBuilder sb = new StringBuilder();
for (int i = 0; i < c.length; i++) {
if (n[i] == 1) {
sb.append(c[i]);
}
}
// 小写字母表
char[] a = new char[26];
for (int i = 0; i < a.length; i++) {
a[i] = (char) ('a' + i);
}
for (int j = 0; j < a.length; j++) {
// sb 去重复之后的,
if (!sb.toString().toLowerCase().contains(String.valueOf(a[j]).toLowerCase())) {
sb.append(a[j]);
}
}
String mw = sb.substring(0, 26);
char[] mwChar = mw.toCharArray();
// 获取明文
StringBuilder result = new StringBuilder();
String str2 = in.nextLine();
char[] ch = str2.toCharArray();
for (int i = 0; i < str2.length(); i++) {
if (!"".equals(String.valueOf(ch[i]))) {
boolean xiao = Character.isLowerCase(ch[i]);
for (int j = 0; j < a.length; j++) {
if (Character.toLowerCase(ch[i]) == a[j]) {
if (xiao) {
// 小写
result.append(mwChar[j]);
} else {
// 小写
result.append(Character.toUpperCase(mwChar[j]));
}
break;
}
}
} else {
result.append(ch[i]);
}
}
System.out.println(result);
}
}
}
查看5道真题和解析