每日移到算法题 1

借鉴文章:Java-敏感字段加密 - 哔哩哔哩

题目描述 

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

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

说明

java 程序

package com.tarena.test.B10;

import java.util.LinkedList;
import java.util.Scanner;

/**
 * 
 * 
给定一个由多个命令字组成的命令字符串;

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

请对指定索引的敏感字段进行加密,替换为******(6个*),
并删除命令字前后多余的下划线_。
如果无法找到指定索引的命令字,输出字符串ERROR 作者:红叶快乐起来 https://www.bilibili.com/read/cv23309523/ 出处:bilibili
 * @author Administrator
 *
 */
public class B11Self {

    public static void main(String[] args) {
        try(Scanner sc = new Scanner(System.in)){
            Integer index = Integer.parseInt( sc.nextLine());
            String value = sc.nextLine();
            System.out.println(resultStr(index,value));
        }
    }
    
    public static String resultStr(Integer index,String value) {
        LinkedList<String> list = new LinkedList<>();
        char[] valueArr = value.toCharArray();
        for(int i =0;i<valueArr.length;i++) {
            char ca = valueArr[i];
            String temp = "";
            
            if(ca == '"') {
                int next = value.indexOf('"',i+1);
                //+1因为后面的"也需要截取到
                temp = value.substring(i,next+1);
                i = next + 1;
            }else {
                int next = value.indexOf("_",i);
                if(next != -1) {
                    temp = value.substring(i,next);
                    i = next;
                }else {
                    //没有_直接截取后面全部的
                    temp = value.substring(i);
                    //结束循环
                    i = value.length();
                }
            }
            if(!"".equals(temp)) {
                list.add(temp);
            }
        }
        
        if(index<list.size()) {
            list.set(index, "******");
            StringBuilder str = new StringBuilder();
            list.forEach(temp -> str.append(temp).append("_"));
            //将最后的_删除
            return str.substring(0,str.length()-1);
        }else {
            return "ERROR";
        }
    }
}
 

了解知识点:

1 、try(){} try 方法的()内可以自主关闭任何java流类型参数

2、subString(begin,end) begin与end相同是返回"" (空字符串)

3、subString(0,value.length());  这样的截取没有作用。subString 是包头不包尾,但是java的索引是从0开始。但是长度是1。如果要丢弃最后一个字符subString(0,value.length()-1) 才可以;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/210485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-工厂模式(Factory)

Factory模式是一种创建型设计模式&#xff0c;用于封装对象的实例化过程。它提供了一个统一的接口来创建不同类型的对象&#xff0c;而无需暴露具体的实例化逻辑给客户端。 #include <iostream> #include <memory>// AbstractProduct&#xff08;抽象产品类&#…

mybatis-plus处理blob字段

转载自&#xff1a;www.javaman.cn 在 Spring Boot 项目中使用 MyBatis-Plus 处理 longblob 字段时&#xff0c;我们可以按照以下步骤进行操作。假设 longblob 存储的是字符串数据。以下是完整的示例代码&#xff1a; 添加依赖&#xff1a;在你的项目的 pom.xml 文件中添加 My…

js判断上传的文件是GBK编码还是UTF-8

1、获取文件二进制数据&#xff0c;这里只做示例&#xff0c;例如element-ui中文件上传的beforeUpload方法&#xff0c;返回的file对象&#xff0c;然后使用FileReader对其进行转换&#xff0c;再进行后续判断 function beforeUpload(file: File) { const reader new FileRea…

Linux基本指令(超详版)

Linux基本指令&#xff08;超详版&#xff09; 1. ls指令2.pwd指令3. cd 指令4.touch指令5mkdir指令6.rmdir指令&&rm指令7.man指令7.cp指令8.mv指令9.echo指令10.cat指令11.more指令12.less指令13.head指令14.tail指令15.date指令16.find指令17.grep指令zip(打包压缩) …

JVM类加载器ClassLoader的源码分析

1、ClassLoader与现有类加载器的关系 ClassLoader与现有类加载器的关系&#xff1a; ClassLoader是一个抽象类。如果我们给定了一个类的二进制名称&#xff0c;类加载器应尝试去定位或生成构成定义类的数据。一种典型的策略是将给定的二进制名称转换为文件名&#xff0c;然后去…

C语言--实现一个函数把一个整数转为它对应的十六进制的字符串

一.题目描述 实现一个函数把一个整数转为它对应的十六进制的字符串。 比如&#xff1a;输入数字1234 输出&#xff1a;4D2 二.思路分析 用一个sprintf函数可以解决问题&#xff0c;输出相对应的字符串 要注意的问题就是&#xff1a;函数结束后要继续使用的内存&#xff08;比如…

Carla自动驾驶仿真六:pygame多个车辆摄像头画面拼接

此文章主要介绍carla前后左右摄像头画面拼接到pygame上 文章目录 前言一、要点分析二、完整代码三、拼接效果四、总结 前言 1、使用carla做仿真测试或者开发时&#xff0c;如果能够将车辆周边的画面拼接并渲染&#xff0c;可以直观地查看周围地环境&#xff0c;便于调试。本文…

Spring Boot 工厂模式 + 抽象类 + 泛型干掉重复代码

业务场景&#xff1a;N个Excel导入&#xff0c;实现动态加载&#xff0c;只需要定义Excel实体&#xff0c;即可实现功能开发&#xff0c; 核心代码 import cn.afterturn.easypoi.excel.annotation.ExcelTarget; import cn.hutool.core.annotation.AnnotationUtil; import cn.h…

删除Windows系统中无用的隐藏设备

一些即插即用设备会占用一些隐藏的系统资源&#xff0c;比如USB转串口的设备会占用COM号码&#xff0c;网卡会占用静态IP地址等等。 通常我们使用设备管理器的显示隐藏设备功能&#xff0c;来删除这些设备。但是设备管理器每次只允许删除一个设备&#xff0c;如果设备太多了&a…

【算法集训】基础数据结构:四、栈

栈理解了两天&#xff0c;所以迟了一天发。 一、栈的概念 栈是一个容器&#xff0c;是一个先进后出的线性表&#xff0c;类似与日常生活中的电梯、杯子等。 仅限在表尾部进行插入和删除操作。 使用链表来模拟栈&#xff1a; typedef int DataType; 相当于给int起一个别名 st…

Go 协程基础:轻松入门并发编程,解析 Goroutines 的奥秘

一、协程基本使用 1、启动一个协程 主线程中每个100毫秒打印一次&#xff0c;总共打印2次另外开启一个协程&#xff0c;打印10次情况一&#xff1a;打印是交替&#xff0c;证明是并行的情况二&#xff1a;开启的协程打印2次&#xff0c;就退出了&#xff08;因为主线程退出了…

做题笔记:SQL Sever 方式做牛客SQL的题目--SQL157

----SQL157 平均播放进度大于60%的视频类别 计算各类视频的平均播放进度&#xff0c;将进度大于60%的类别输出。 注&#xff1a; 播放进度播放时长视频时长*100%&#xff0c;当播放时长大于视频时长时&#xff0c;播放进度均记为100%。 结果保留两位小数&#xff0c;并按播放进…

基于ssm的学生公寓管理中心系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本学生公寓管理中心系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…

[报错]记录IDEA远程开发报错:java: Cannot run program.....

报错内容 IDEA在进行远程开发的时候报错&#xff0c;内容如下&#xff1a; java: Cannot run program "/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java" (in directory "/home/jim/.cache/JetBrains/RemoteDev-IU/_home_jim_DevCodes_Github_zfile/compile-…

redis主从复制【面试必看】

在分布式系统中&#xff0c;希望使用多个服务器来部署redis&#xff0c;存在以下几种redis的部署方式 主从模式主从哨兵集群模式 主从模式 在若干个redis节点中&#xff0c;有的是主节点&#xff0c;有的是从节点 假设有三个物理服务器&#xff08;称为是三个节点&#xff…

(JSP)EL——优化登录界面,获取对象,获取数据

EL优化登录界面 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"request.getServerName()":"reques…

生产工序(oj题)

很有趣的一道题 关键在于固定工序的整合 看样例是固定工序中间是不能插入其他工序的&#xff08;也不讲清楚&#xff09;&#xff0c;如果可以的话&#xff0c;只能说可能会更麻烦 注意固定工序是按照固定工序中的第一个工序进行排序的 整合完之后&#xff0c;就是递归列出…

Java中的IO流①——IO流的体系、字节流、try...catch异常处理

概述 IO流的分类 IO流的体系 这四个类都是抽象类&#xff0c;所以需要实现类对象才能使用---> 字节流 FileInputStream--> 书写细节 代码示范 此时文件a.txt内容为abcde 使用char强转和read方法调用五次read方法--> public static void main(String[] args) throws IO…

mysql 语言学习

整理了一下 mysql 操作语言&#xff0c;不是很全&#xff0c;部分地方也许需要修改&#xff0c;先放上来&#xff0c;有时间再慢慢完善。 一、数据库操作 连接数据库 $ sudo mysql [-h ip] -u root -p [-P 3306] 初始化数据库 $ mysql_secure_installation备份数据库 # 备…

初出茅庐的小李博客之TobudOS移植到EVB_AIoT开发板

本博客参考教程&#xff1a; https://atomgit.com/OpenAtomFoundation/TobudOS/blob/master/doc/TobudOS_EVB_AIoT_STM32_Guide.md 介绍一下EVB_AIoT开发板 这个开发板是由TobudOS开源社区联合意法半导体、南京厚德物联网设计的一款高性能IoT开发平台&#xff0c;主控芯片是S…