华为OD机试 - 敏感字段加密(Java 2023 B卷 100分)

news/2024/7/20 18:23:20 标签: 华为od, 算法, 送书, 学习方法

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

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

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

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

二、输入描述

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

三、输出描述

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

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

四、解题思路

  1. 第一行输入命令字索引K;
  2. 第二行输入命令字符串S;
  3. 将命令字符串S转为数组;
  4. 遍历数组;
    • 可以通过两个双引号”来标识包含下划线 的命令字或空命令字(仅包含两个双引号的命令字);
    • 命令字之间以一个或多个下划线 _ 进行分割;
    • 如果是最后一位 则直接结束最后一个命令字;
    • 其它即为字符串
  5. 输出处理后的命令字符串,如果无法找到指定索引的命令字,输出字符串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在线答疑。

在这里插入图片描述


http://www.niftyadmin.cn/n/4996042.html

相关文章

【LeetCode】85.最大矩形

题目 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [["1","0","1","0","0"],["1&quo…

真机安装Linux Centos7

准备工具&#xff1a; 8G左右U盘最新版UltraISOCentOS7光盘镜像 操作步骤 下载镜像 地址&#xff1a;http://isoredirect.centos.org/centos/7/isos/x86_64/ 安装刻录工具UltraISO&#xff0c;刻录镜像到U盘 ① 选择ISO镜像文件 ② 写入磁盘镜像&#xff0c;在这里选择你的U盘…

微服务--Gatway:网关

routes: - id:order_route(路由唯一 标识&#xff0c;路由到order) uri&#xff1a;http://localhost:8020 #需要转发的地址 #断言规则&#xff08;用于路由规则的匹配&#xff09; predicates: -path/order-serv/** -pathlb://order-service # lb: 使用nacos中的本地…

废品回收功能文档

废品回收 基础版 后台功能 功能字段描述二级分类表字段&#xff1a;图标、名称、描述、图片、注意事项、上一级、状态功能&#xff1a;前端展示和筛选&#xff1b;增删改查今日指导价表字段&#xff1a;关联分类、名称、价格、单位、状态功能&#xff1a;前端展示和预估价格&…

前端Vue自定义得分构成水平柱形图组件 可用于系统专业门类得分评估分析

引入Vue自定义得分构成水平柱形图组件&#xff1a;cc-horBarChart 随着技术的发展&#xff0c;传统的开发方式使得系统的复杂度越来越高&#xff0c;一个小小的改动或小功能的增加可能会导致整体逻辑的修改&#xff0c;造成牵一发而动全身的情况。为了解决这个问题&#xff0c…

Python教程(12)——Python数据结构集合set介绍

集合 创建集合访问集合删除集合修改集合元素添加集合元素删除集合元素 集合运算&#xff1a;并集&#xff08;Union&#xff09;交集&#xff08;Intersection&#xff09;差集&#xff08;Difference&#xff09;对称差集&#xff08;Symmetric Difference&#xff09; 集合的…

C语言---位域(位段)

位域&#xff08;位段&#xff09; 1、位域定义&#xff1a; 有些数据在存储时并不需要占用一个完整的字节&#xff0c;只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态&#xff0c;用 0 和 1 表示足以&#xff0c;也就是用一个二进位。正是基于这种考虑&…

机器学习:Xgboost

Xgboost XGBoost&#xff08;eXtreme Gradient Boosting&#xff09;是一种机器学习算法&#xff0c;是梯度提升决策树&#xff08;Gradient Boosting Decision Trees&#xff09;的一种优化实现。它是由陈天奇在2014年开发并推出的。XGBoost是一种强大而高效的算法&#xff0…