每日一道算法题 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/214433.shtml

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

相关文章

Proxmark3 Easy救砖-20231209

事情是这样的&#xff0c;在淘宝买了个PM3&#xff0c;拿到手后刷固件的&#xff0c;一不小心刷成砖头了&#xff0c;现象就是四个灯全亮&#xff0c;插上电脑USB不识别。问商家他也不太懂&#xff0c;也是个半吊子技术&#xff0c;远程给我刷机搞了半天也没有搞定&#xff0c;…

微表情检测(三)----基于光流特征的微表情检测

Micro-expression spotting based on optical flow features 基于光流特征的微表情检测 Abstract 本文提出了一种高精度和可解释性的自动微表情检测方法。首先&#xff0c;我们设计了基于鼻尖位置的图像对齐方法&#xff0c;以消除由头部晃动引起的全局位移。其次&#xff0…

C语言中的一维数组与二维数组

目录 一维数组数组的创建初始化使用在内存中的存储 二维数组创建初始化使用在内存中的存储 数组越界 一维数组 数组的创建 数组是一组相同类型元素的集合。 int arr1[10]; char arr3[10]; float arr4[10]; double arr5[10];下面这个数组能否成功创建&#xff1f; int count…

Linux上编译和测试V8引擎源码

介绍 V8引擎是一款高性能的JavaScript引擎&#xff0c;广泛应用于Chrome浏览器和Node.js等项目中。在本篇博客中&#xff0c;我们将介绍如何在Linux系统上使用depot_tools工具编译和测试V8引擎源码。 步骤一&#xff1a;安装depot_tools depot_tools是一个用于Chromium开发…

学习IO的第七天

作业&#xff1a;使用消息队列完成两个进程间的相互通信 #include <head.h>struct msgbuf {long mtype; //消息类型char mtext[1024]; //正文大小 };#define SIZE (sizeof(struct msgbuf)-sizeof(long))int main(int argc, const char *argv[]) {//1.创…

打印一个整数的每一位和求阶乘(递归和非递归的C语言实现)

文章目录 打印一个整数的每一位思考递归非递归 求阶乘递归非递归证明0的阶乘为1 写代码中遇到的VS输出窗口提示信息为什么VS平台32位和64位的long都是4字节&#xff1f;%zu是什么格式说明符VS下_int128为什么用不了 打印一个整数的每一位 思考 负数和0都是整数&#xff0c;我…

DevEco Studio将编辑器整体文本改为简体中文

我们打开编辑器 随便进入一个项目 这里 我们左上角目录 选择 File下面菜单中的 Settings… 打开配置界面 然后在设置窗口左侧导航栏中 选择 Plugins 插件 然后上方导航栏中 选择 Installed 参考下图 然后 找到这个Chinese(Simplified) Chinese是什么应该不用我多说吧 我们把…

区块链扩容问题研究【06】

1.Plasma&#xff1a;Plasma 是一种基于以太坊区块链的 Layer2 扩容方案&#xff0c;它通过建立一个分层结构的区块链网络&#xff0c;将大量的交易放到子链上进行处理&#xff0c;从而提高了以太坊的吞吐量。Plasma 还可以通过智能合约实现跨链交易&#xff0c;使得不同的区块…

Python面经【8】- Python设计模式专题-上卷

Python面经【8】- Python设计模式专题-上卷 一、接口二、单例模式(1) 方法一&#xff1a;使用模块(2) 方法二&#xff1a; 装饰器实现【手撕 理解】&#xff08;单下划线 闭包 装饰器 类方法&#xff09;(3) 方法三&#xff1a;基于__new__方法【new和init 】 设计模式是一…

简单的 u-popup 弹出框

uniapp中的popup组件可以用于弹出简单的提示框、操作框、菜单等。它可以通过position属性控制弹出框的位置&#xff0c;不同的position值会使得弹出框呈现不同的弹出形式 目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 …

Linux系统---基于Pipe实现一个简单Client-Server system

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、题目要求 Server是一个服务器进程&#xff0c;只能进行整数平方运算。Client要计算一个整数的平方的平方的平方&#xff0c;即…

聊聊 Jetpack Compose 原理 -- 穿透刺客 CompositionLocal

Compose 官方说明一直很简洁&#xff1a;CompositionLocal 是通过组合隐式向下传递数据的工具。 我们先来看一段代码&#xff1a; class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setCo…

datav-轮播排名-对数据进行处理

前言 对于大屏需求我们排名数据轮播也是经常需要用到的需求&#xff0c;datav也是给我们提供了 不是说我们自己不能写&#xff0c;而是提供好的轮子比我们自己 写的&#xff0c;更全面&#xff0c;更周到&#xff0c; 没有特殊需求的话&#xff0c;使用datav配置一下完成这个…

mysqlsh导入json,最终还得靠navicat导入json

工作需要将一个巨大的10G的json导入mysql数据库。 看到mysql官方有对json导入的支持。 如下&#xff1a; MySQL :: Import JSON to MySQL made easy with the MySQL Shell $ mysqlsh rootlocalhost:33300/test --import /path_to_file/zips.json Creating a session to root…

产品经理进阶:以客户为中心的8个维度

目录 简介 以客户为中心 流程和组织维度 产品维度 CSDN学院《硬件产品进阶课》

python:六种算法(DBO、RFO、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、六种算法简介 1、蜣螂优化算法DBO 2、红狐优化算法RFO 3、鲸鱼优化算法WOA 4、灰狼优化算法GWO 5、粒子群优化算法PSO 6、遗传算法GA 二、6种算法求解23个函数 &#xff08;1&#xff09;23个函数简介 参考文献&#xff1a; [1] Yao X, Liu Y, Lin G M. Evolution…

读书笔记 | 自我管理的关键是提高执行力

哈喽啊&#xff0c;你好&#xff0c;我是雷工&#xff01; 有句话说&#xff0c;能管好自己才是真的本事。 自我管理&#xff0c;管好自己很重要。 我们之所以懂得这么多的道理&#xff0c;却依然过不好这一生&#xff1f; 很大部分原因是因为管不住自己&#xff0c;做不到。 …

性能测试基础

性能测试分类 客户端性能&#xff1a;测试APP自身的性能&#xff0c;例如CPU、内存消耗&#xff1b;web页面元素渲染速度 服务端性能&#xff1a;测试服务端项目程序的支持的并发、处理能力、响应时间等&#xff0c;主要通过接口来做性能测试 性能测试指标 并发 同时向服务…

大一作业习题

第一题&#xff1a;答案&#xff1a; #include <stdio.h> void sort(int a[], int m) //将数组a的前m个元素(从小到大)排序 {int i 0;for (i 0; i < m - 1; i){int j 0;int flag 1;for (j 0; j < m - 1 - i; j){if (a[j] > a[j 1]){int t 0;t a[j];…

Java八股文面试全套真题【含答案】- Servlet篇

以下是一些关于Servlet的经典面试题以及它们的答案&#xff1a; 什么是 Servlet&#xff1f; 答案&#xff1a;Servlet 是运行在服务器上&#xff0c;用于处理客户端请求并生成响应的 Java 类。 Servlet 和 JSP 之间的区别是什么&#xff1f; 答案&#xff1a;Servlet 是基于…