每日一道算法题 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) 才可以;

相关推荐

  1. 每日算法 1

    2023-12-12 00:00:04       37 阅读
  2. 每日算法 3(2023-12-11)

    2023-12-12 00:00:04       26 阅读
  3. 每日算法 14(2023-12-22)

    2023-12-12 00:00:04       29 阅读
  4. 算法每日 1】CordCoverMaxPoint

    2023-12-12 00:00:04       29 阅读
  5. 每日编程:niven 数

    2023-12-12 00:00:04       30 阅读
  6. 算法练习----力扣每日------1

    2023-12-12 00:00:04       20 阅读
  7. 【回溯算法 1】全排列(medium)(每日

    2023-12-12 00:00:04       9 阅读
  8. 每日算法day-two(备战蓝桥杯)

    2023-12-12 00:00:04       44 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 00:00:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 00:00:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 00:00:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 00:00:04       18 阅读

热门阅读

  1. 基于SOPC的MPEG视频播放器(Matlab实现)

    2023-12-12 00:00:04       35 阅读
  2. L1-022 奇偶分家

    2023-12-12 00:00:04       39 阅读
  3. Vue路由守卫笔记

    2023-12-12 00:00:04       36 阅读
  4. Git命令---查看远程仓库

    2023-12-12 00:00:04       37 阅读
  5. Golang AI框架:探索人工智能与Go语言的结合

    2023-12-12 00:00:04       41 阅读
  6. 使用IDA调试工具辅助排查C++软件异常问题

    2023-12-12 00:00:04       39 阅读
  7. SAP UI5 walkthrough step8 Translatable Texts

    2023-12-12 00:00:04       31 阅读
  8. C盘瘦身,C盘清理

    2023-12-12 00:00:04       35 阅读
  9. 小功能实现(二十)分类统计,Map取值自增

    2023-12-12 00:00:04       30 阅读
  10. 704. 二分查找

    2023-12-12 00:00:04       35 阅读