华为OD机试之敏感字段加密(java源码)_给定一个由多个命令字组成的命令字符串

最后

无论是哪家公司,都很重视基础,大厂更加重视技术的深度和广度,面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。

针对以上面试技术点,我在这里也做一些分享,希望能更好的帮助到大家。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

敏感字段加密

给定一个由多个命令字组成的命令字符串:
1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号
2、命令字之间以一个或多个下划线 _ 进行分割;
3、可以通过两个双引号”来标识包含下划线 的命令字或空命令字(仅包含两个双引号的命令字),双引号不会在命令字内部出现
请对指定索引的敏感字段进行加密,替换为****** (6个*) ,并删除命令字前后多余的下划线如果无法找到指定索引的命令字,输出字符串ERROR。

输入描述

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

输出描述

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

输入1输入2输出说明
1password__a12345678_timeout_100password_******_timeout_100加密第二个命令字
2aaa_password_“a12_45678”timeout__100_“”_aaa_password_******_ timeout__“”加密第三个命令字

源码和解析

解析:

1.将输入的命令字串转换成单字符数组 char[]
2.遍历单字符数组,并判断单个字符的含义
2.1 遍历字符数组,遇到指令截止符,则代表一个命令字结束,截止符有以下几种情况
2.1.1 第二次双引号出现
2.1.2 下划线(需要判断是否前面有引号,若有,则代表不是截止符。空下划线过滤掉)
2.1.3 字符数组遍历结束时 即最后一个字符
2.2 不断产生命令字后加入List之中
2.3 判断输入的索引是否越界
2.3.1 若越界 则输出ERROR
2.3.2 若未越界 将索引对应位置的命令字替换为*****
2.4 遍历List 产生最后的加密指令

示例代码:

import java.util.\*;
import java.util.Scanner;
public class T1 {
	static Scanner scanner=new Scanner(System.in);
	public static void main(String[] args) {
		System.out.println("请输入索引:");
		int index=Integer.parseInt(scanner.nextLine());
		System.out.println("请输入命令串:");
		String input=scanner.nextLine();
		char[] chArr=input.toCharArray();
		String cmd="";
		List<String> cmdList=new ArrayList<>();
		for(int i=0;i<chArr.length;i++){
			char item=chArr[i];
			if(item=='"'&&cmd.contains(item+"")){
				//如果是双引号 且该命令字内有 那么就是结束的双引号
				cmd+="\"";
				cmdList.add(cmd);
				cmd="";
			}else if(item=='\_'&&!cmd.contains("\"")){
				//item=='\_' 下划线 表示指令结束
				//!cmd.contains("\"") 该命令内前面不包含" 若包含 则是引号内的 为同一个命令字
				//cmd.equals("") 该命令字内是空的 那么就是空下划线 无意义 过滤掉
				if(!cmd.equals("")){
					cmdList.add(cmd);
					cmd="";
				}
			}
			else if(i==chArr.length-1){
				//如果是最后一位 则直接结束最后一个命令字


# **最后**

分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。

**这些面试题相对应的技术点:**

*   JVM
*   MySQL
*   Mybatis
*   MongoDB
*   Redis
*   Spring
*   Spring boot
*   Spring cloud
*   Kafka
*   RabbitMQ
*   Nginx
*   ......

**大类就是:**

*   Java基础
*   数据结构与算法
*   并发编程
*   数据库
*   设计模式
*   微服务
*   消息中间件

![程序员,每个月给你发多少工资,你才会想老板想的事?](https://img-blog.csdnimg.cn/img_convert/c6743970946f66ae7ec92e1ba9a077ab.webp?x-oss-process=image/format,png)

![程序员,每个月给你发多少工资,你才会想老板想的事?](https://img-blog.csdnimg.cn/img_convert/480b43bff5be87da62db92655a099bbf.webp?x-oss-process=image/format,png)

![程序员,每个月给你发多少工资,你才会想老板想的事?](https://img-blog.csdnimg.cn/img_convert/070db651a18d8307cba4b7f51c329e5b.webp?x-oss-process=image/format,png)

![程序员,每个月给你发多少工资,你才会想老板想的事?](https://img-blog.csdnimg.cn/img_convert/fbe453215bbd09e3785c7939a57251b5.webp?x-oss-process=image/format,png)

![程序员,每个月给你发多少工资,你才会想老板想的事?](https://img-blog.csdnimg.cn/img_convert/0fc469a9021745da2fa38c1cff94e79e.webp?x-oss-process=image/format,png)

![程序员,每个月给你发多少工资,你才会想老板想的事?](https://img-blog.csdnimg.cn/img_convert/f9b827a25e311c0ee02d5853118b35a4.webp?x-oss-process=image/format,png)

![程序员,每个月给你发多少工资,你才会想老板想的事?](https://img-blog.csdnimg.cn/img_convert/e3f32a5c38c38e14ae33a12416bb3000.webp?x-oss-process=image/format,png)

![程序员,每个月给你发多少工资,你才会想老板想的事?](https://img-blog.csdnimg.cn/img_convert/bf271f738030d66c3b34483e88d6afe9.webp?x-oss-process=image/format,png)

![程序员,每个月给你发多少工资,你才会想老板想的事?](https://img-blog.csdnimg.cn/img_convert/22dcf70287169945c6350a0c351e6479.webp?x-oss-process=image/format,png)



> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值