华为OD机试E卷 - 敏感字段加密(Java

题目描述

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

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_""

说明

解题思路

题意

就是查找替换的事!

题目要求

  • 读取输入中的命令字索引 K(从0开始计数)和命令字符串 S
  • 查找命令字符串 S 中第 K 个命令字,将其替换为 ******(6个 *)。
  • 去除处理后字符串中每个命令字前后的多余下划线 _
  • 如果找不到指定索引的命令字,则输出字符串 "ERROR"

示例解释

示例1

输入:

1
password__a12345678_timeout_100

输出:

password_******_timeout_100

解释:

  • 1 个命令字是 a12345678,用 ****** 替换。
  • 处理后字符串为 password_******_timeout_100

示例2

输入:

2
aaa_password_"a12_45678"_timeout__100_""_

输出:

aaa_password_******_timeout_100_""

解释:

  • 2 个命令字是 "a12_45678",用 ****** 替换。
  • 删除处理后的字符串中每个命令字前后的多余下划线 _
  • 结果为 aaa_password_******_timeout_100_""

思路

  1. 初始化变量:

    • 定义一个空字符串 command 来存储当前正在解析的命令字。
    • 定义一个列表 commandList 来存储解析后的命令字列表。
  2. 遍历字符数组并处理每个字符:

    • a. 如果当前字符是双引号且 command 中已经包含一个双引号:
      • 将双引号添加到 command 中。
      • 将解析完毕的命令字添加到 commandList 中,然后重置 command
    • b. 如果 command 不包含双引号且当前字符是下划线:
      • 检查 command 是否为空,如果不为空:
        • 将解析完毕的命令字添加到 commandList 中,然后重置 command
    • c. 如果已经到达字符串末尾:
      • 将当前字符添加到 command 中。
      • 将解析完毕的命令字添加到 commandList 中,然后重置 command
    • d. 否则,将当前字符添加到 command 中。
  3. 检查命令字索引 K 是否超出范围:

    • 如果超出范围,输出 "ERROR"
  4. 否则:

    • 将指

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

机试E卷D卷刷题日记 文章被收录于专栏

机试刷题记录

全部评论

相关推荐

10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务