- 敏感字段加密
垃圾题目,别做浪费时间
- 2025-1-6 22:24:04 @
题目根本没有讲清楚什么时候该有下划线 import java.util.*; import java.util.Scanner; public class Main { static Scanner scanner=new Scanner(System.in); public static void main(String[] args) {
int index=Integer.parseInt(scanner.nextLine());
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){
//如果是最后一位 则直接结束最后一个命令字
cmd+=item;
cmdList.add(cmd);
cmd="";
}
else{
//其他 情况 则是命令字
cmd+=item;
}
}
//password__a12345678_timeout_100
//aaa_password_"a12_45678"_timeout__100_""_
if(index>cmdList.size()-1||index<0){
System.out.println("ERROR");
}else{
cmdList.set(index, "******");
String result="";
for(String item:cmdList){
result+="_"+item;
}
result=result.replaceFirst("_", "");
System.out.println(result);
}
}
}
这是正确代码,跑一个示例如下: 3 abc__asd""_jklu"asda_asda""a"""__asdf"a"sd abc_asd""jklu******"a"""_asdf"a"_sd
第一个空的双引号前没有下划线,第二个空双引号前后都有下划线,所以双引号前后到底要不要有下划线?示例给的又少,讲的有不清楚,真的浪费时间
0 条评论
目前还没有评论...
信息
- ID
- 108
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 266
- 已通过
- 48
- 上传者