算法每一题,成长每一天~
C0E17 敏感字段加密
真题链接:【持续更新】2024华为 OD 机试E卷 机考真题库清单(全真题库)
思路
Java
import java.util.Scanner;
public class C0E17 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int k = Integer.parseInt(in.nextLine());
String line = in.nextLine();
char[] arr = line.toCharArray();
boolean open = false;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == '"') {
open = !open; // 开关,成对出现
continue;
}
if (open && arr[i] == '_') {
arr[i] = '+';
}
}
String str = new String(arr);
String[] split = str.split("_");
split[k] = "******"; // 加密
// 截掉头尾的"_"
int s = 0, e = split.length - 1;
if (split[0].equals("")) {
s = 1;
}
if (split[e].equals("")) {
e = e - 1;
}
// 拼接起来
for (int i = s; i <= e; i++) {
String reStr = split[i].replaceAll("\\+", "_"); // 替换回去
if (reStr.isEmpty()) {
continue; // 空串,也不打印后面的 _
}
System.out.print(reStr);
if (i != e) {
System.out.print("_");
}
}
}
}
总结
1、比较简单
算法要多练多练多练!!