目录
- 专栏导读
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、Java算法源码
- 六、效果展示
- 1、输入
- 2、输出
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
给定一个由多个命令字组成的命令字符串:
- 字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号;
- 命令字之间以一个或多个下划线 _ 进行分割;
- 可以通过两个双引号”来标识包含下划线 的命令字或空命令字(仅包含两个双引号的命令字),双引号不会在命令字内部出现
请对指定索引的敏感字段进行加密,替换为****** (6个*) ,并删除命令字前后多余的下划线如果无法找到指定索引的命令字,输出字符串ERROR。
二、输入描述
输入为两行,第一行为命令字索引K (从0开始) ,第二行为命令字符串S。
三、输出描述
输出处理后的命令字符串,如果无法找到指定索引的命令字,输出字符串ERROR
输入 | 输出 | 说明 |
---|---|---|
1 password__a12345678_timeout_100 | password_******_timeout_100 | 加密第二个命令字符串 |
2 aaa_password_“a12_45678”timeout__100_“”_ | aaa_password_******_ timeout__“” | 加密第三个命令字符串 |
四、解题思路
- 第一行输入命令字索引K;
- 第二行输入命令字符串S;
- 将命令字符串S转为数组;
- 遍历数组;
- 可以通过两个双引号”来标识包含下划线 的命令字或空命令字(仅包含两个双引号的命令字);
- 命令字之间以一个或多个下划线 _ 进行分割;
- 如果是最后一位 则直接结束最后一个命令字;
- 其它即为字符串
- 输出处理后的命令字符串,如果无法找到指定索引的命令字,输出字符串ERROR。
五、Java算法源码
package com.guor.od;
import java.util.*;
public class OdTest01 {
/**
* 敏感字段加密
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 命令字索引K
int K = Integer.parseInt(scanner.nextLine());
// 命令字符串S
String S = scanner.nextLine();
char[] arr = S.toCharArray();
String str = "";
List<String> list = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
char item = arr[i];
// 可以通过两个双引号”来标识包含下划线 的命令字或空命令字(仅包含两个双引号的命令字)
if (item == '"' && str.contains(item + "")) {
str += "\"";
list.add(str);
str = "";
// 命令字之间以一个或多个下划线 _ 进行分割
} else if (item == '_' && !str.contains("\"")) {
if (!str.equals("")) {
list.add(str);
str = "";
}
// 如果是最后一位 则直接结束最后一个命令字
} else if (i == arr.length - 1) {
str += item;
list.add(str);
str = "";
} else {
str += item;
}
}
if (K > list.size() - 1 || K < 0) {
System.out.println("ERROR");
} else {
list.set(K, "******");
String ret = "";
for (String item : list) {
ret += "_" + item;
}
ret = ret.replaceFirst("_", "");
System.out.println(ret);
}
}
}
六、效果展示
1、输入
2
nezha_study_“java”_you_come
2、输出
nezha_study_******_you_come
🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。