目录
- 专栏导读
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、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);// 命令字索引Kint K = Integer.parseInt(scanner.nextLine());// 命令字符串SString 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在线答疑。