欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 华为OD E卷(100分)31-敏感字段加密

华为OD E卷(100分)31-敏感字段加密

2025/5/13 15:09:52 来源:https://blog.csdn.net/arnold66/article/details/144631246  浏览:    关键词:华为OD E卷(100分)31-敏感字段加密

前言

        工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。

题目描述

        给定一个由多个命令字组成的命令字符串:

  1. 字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号; 
  2. 命令字之间以一个或多个下划线 进行分割; 
  3. 可以通过两个双引号""来标识包含下划线 的命令字或空命令字(仅包含两个双引号的命令字),双引号不会在命令字内部出现;

        请对指定索引的敏感字段进行加密,替换为******(6个*),并删除命令字前后多余的下划线_。
如果无法找到指定索引的命令字,输出字符串ERROR.

输入

        输入为两行,第一行为命令字索引K(从0开始),第二行为命令字符串S。

输出

        输出处理后的命令字符串,如果无法找到指定索引的命令字,输出字符串ERROR。

示例

示例1

输入:
1
password__a12345678_timeout_100
输出:
password_******_timeout_100

示例2

输入:
2
aaa_password_"a12_45678"_timeout__100_""_
输出:

aaa_password_******_timeout_100_""

解题思路

遍历字符串:
        当遇到“_” ,且不在括号内时,为一个完整的指令;

        当遇到 “” 时,判断是否引用结束;

题解

JAVA实现

package huawei.e100;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/**
* @author arnold
* @date 2024年12月21日
* 敏感字段加密
*/
public class T31_MinGanZiDuanJiaMi {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {int index = sc.nextInt();sc.nextLine();String str = sc.nextLine();String res = run(str, index);System.out.println(res);}}static String run(String str, int index) {List<String> lcmds = new ArrayList<String>();boolean isInQuote = false;int start = 0; // 记录指令开始位置for (int i = 1; i < str.length(); i++) {if (str.charAt(i) == '"') {isInQuote = !isInQuote;}if(str.charAt(i) == '_' ){if (str.charAt(i-1) != '_' && !isInQuote) {lcmds.add(str.substring(start, i));}} else if(str.charAt(i) != '_' ) {if (str.charAt(i-1) == '_' && !isInQuote) {start = i;} else if (i == str.length() -1) { lcmds.add(str.substring(start)); // 最后命令部分 从起始截取到最后}}}if (index < lcmds.size()) {lcmds.set(index, "******");return String.join("_", lcmds);} else {return "ERROR";}}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词