首页 > 编程语言 >通过码流串,格式为key,len,val。提供key,查找val的算法。

通过码流串,格式为key,len,val。提供key,查找val的算法。

时间:2024-10-01 15:00:21浏览次数:7  
标签:return String val len length tag key null public

  1 import java.util.ArrayList;
  2 import java.util.HashMap;
  3 import java.util.UUID;
  4 
  5 public class HuaweiTest {
  6 
  7     public static void main(String[] args) {
  8 //        System.out.println("Hello World!");
  9         String tag = "31";
 10         String codeStreamStr = "31 01 32";
 11         String codeStringVal = getCodeStringVal(tag, codeStreamStr);
 12         System.out.println(codeStringVal);
 13     }
 14 
 15 
 16     public static String getCodeStringVal(String tag, String codeStreamStr) {
 17         String trim = tag.trim();
 18         if (trim == null) {
 19             return null;
 20         }
 21         if (trim.isEmpty()) {
 22             return null;
 23         }
 24         if ((codeStreamStr.length() * 4) > 50000) {
 25             return null;
 26         }
 27         String trim1 = codeStreamStr.trim();
 28         if (trim1 == null) {
 29             return null;
 30         }
 31         if (trim1.isEmpty()) {
 32             return null;
 33         }
 34         String[] split = trim1.split("\\s");
 35         if (!(split.length % 3 == 0)) {
 36             return null;
 37         }
 38         for (int i = 0; i < split.length; i++) {
 39             String s = split[i];
 40             if (s.length() > 2) {
 41                 return null;
 42             }
 43             String trim2 = s.trim();
 44             for (int j = 0; j < trim2.length(); j++) {
 45                 char c = trim2.charAt(j);
 46                 if (Character.isDigit(c)) {
 47                     continue;
 48                 } else {
 49                     if (Character.isLowerCase(c)) {
 50                         return null;
 51                     }
 52                     if (!(c >= 'A' && c <= 'F')) {
 53                         return null;
 54                     }
 55                 }
 56             }
 57         }
 58         String[] split2 = codeStreamStr.split("\\s");
 59         HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
 60         for (int i = 0; i < split2.length; i++) {
 61             String s = split2[i];
 62             String trim2 = s.trim();
 63             if (stringIntegerHashMap.containsKey(trim2)) {
 64                 stringIntegerHashMap.put(trim2, stringIntegerHashMap.get(trim2) + 1);
 65             } else {
 66                 stringIntegerHashMap.put(trim2, 1);
 67             }
 68         }
 69         System.out.println(stringIntegerHashMap);
 70         ArrayList<CodeStream> codeStreamArrayList = new ArrayList<>();
 71         String[] split1 = codeStreamStr.split("\\s");
 72         int count = 0;
 73         int codeTagIndex = 0;
 74         for (int i = 0; i < split1.length; i++) {
 75             if ((count + 1) % 3 == 0) {
 76                 continue;
 77             } else {
 78                 CodeStream codeStream = new CodeStream();
 79                 codeStream.setId(UUID.randomUUID().toString());
 80                 String s = split1[codeTagIndex];
 81                 if (extracted(s, stringIntegerHashMap)) return null;
 82                 codeStream.setTag(s);
 83                 String s1 = getString(split1, codeTagIndex);
 84                 if (s1 == null) return null;
 85                 codeStream.setLength(Integer.valueOf(s1));
 86                 String s2 = split1[codeTagIndex + 2];
 87                 codeStream.setValue(s2);
 88                 codeStreamArrayList.add(codeStream);
 89                 count += 3;
 90                 codeTagIndex = count;
 91             }
 92         }
 93         System.out.println(codeStreamArrayList);
 94         ArrayList<String> stringArrayList = new ArrayList<>();
 95         codeStreamArrayList.forEach(e -> {
 96             String tag1 = e.getTag();
 97             if (tag.equals(tag1)) {
 98                 String value = e.getValue();
 99                 stringArrayList.add(value);
100             }
101         });
102         System.out.println(stringArrayList);
103         StringBuilder stringBuilder = new StringBuilder();
104         stringArrayList.forEach(e -> {
105             stringBuilder.append(e);
106             stringBuilder.append("\\s");
107         });
108         return stringBuilder.toString();
109     }
110 
111     private static String getString(String[] split1, int codeTagIndex) {
112         String s1 = split1[codeTagIndex + 1];
113         byte[] bytes1 = s1.getBytes();
114 //        if (bytes1.length>2){
115 //            return null;
116 //        }
117         return s1;
118     }
119 
120     private static boolean extracted(String s, HashMap<String, Integer> stringIntegerHashMap) {
121         byte[] bytes = s.getBytes();
122         int length = bytes.length;
123 //        if (length>1){
124 //            return true;
125 //        }
126         if (stringIntegerHashMap.containsKey(s)) {
127             if (stringIntegerHashMap.get(s) >= 2) {
128                 return true;
129             }
130         }
131         return false;
132     }
133 }
134 
135 class CodeStream {
136     private String id;
137     private String tag;
138     private Integer length;
139     private String value;
140 
141     public String getId() {
142         return id;
143     }
144 
145     public void setId(String id) {
146         this.id = id;
147     }
148 
149     public String getTag() {
150         return tag;
151     }
152 
153     public void setTag(String tag) {
154         this.tag = tag;
155     }
156 
157     public Integer getLength() {
158         return length;
159     }
160 
161     public void setLength(Integer length) {
162         this.length = length;
163     }
164 
165     public String getValue() {
166         return value;
167     }
168 
169     public void setValue(String value) {
170         this.value = value;
171     }
172 
173     @Override
174     public String toString() {
175         return "CodeStream{" +
176                 "id='" + id + '\'' +
177                 ", tag='" + tag + '\'' +
178                 ", length=" + length +
179                 ", value='" + value + '\'' +
180                 '}';
181     }
182 }

 

标签:return,String,val,len,length,tag,key,null,public
From: https://www.cnblogs.com/liaowanzhong/p/18442886

相关文章

  • 通过码流串,格式为key,len,val。提供key,查找val的算法。
    importjava.util.ArrayList;importjava.util.HashMap;importjava.util.UUID;publicclassHuaweiTest{publicstaticvoidmain(String[]args){//System.out.println("HelloWorld!");Stringtag="31";Stri......
  • 论文解读《MASTERKEY: Automated Jailbreaking of Large Language Model Chatbots》
    导言​ 在参加东南大学网络安全学院夏令营的契机下,我第一次接触大模型安全领域。L老师是网络安全领域的一位大牛,在和L老师交流期间,被告知需要准备一次paperpresentation介绍四大会中感兴趣的一篇文章,我选择了汇报这篇来自NDSS2024的《MASTERKEY:AutomatedJailbreakingofLarg......
  • php的urlencode和rawurlencode区别
    urlencode和rawurlencode都是用于对URL进行编码的函数,但它们在处理方式和应用场景上存在明显的区别。以下是关于这两个函数的详细比较:一、定义与标准urlencode:基于rawurlencode标准,但有略微的不同,它定义在rfc1866,这个rfc属于html标准的一部分,编码方式和application/x-www-for......
  • [FlareOn3]Challenge11
    载入PE.32bit,无壳.载入IDA(32bit).寻找main函数.int__cdeclmain(intargc,constchar**argv,constchar**envp){charBuffer[128];//[esp+0h][ebp-94h]BYREFchar*Str1;//[esp+80h][ebp-14h]char*Str2;//[esp+84h][ebp-10h]HANDLEStdHandl......
  • selenium过webdriver检测
    js/*!*Note:Auto-generated,donotupdatemanually.*Generatedby:https://github.com/berstend/puppeteer-extra/tree/master/packages/extract-stealth-evasions*Generatedon:Sun,13Feb202212:56:05GMT*License:MIT*/(({_utilsFns:_utilsFns......
  • Selenium+WebDriver 各浏览器驱动下载与使用
    Selenium+Python之WebDriver驱动下载与使用一、Firefox(火狐)浏览器驱动下载地址:https://github.com/mozilla/geckodriver/releases/下载对应驱动:根据自己的操作系统下载相对应的驱动。使用方法:把文件存放在python根目录下,例如:C:\xxx\Python\Python38下。(安装最新版......
  • WPF Calendar DisplayMode SelectionMode FirstDayOfWeek Start End BlackoutDates
    //xaml<Windowx:Class="WpfApp427.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • sizeof vs strlen - 关于代码可读性、性能考量和编译器优化
    1、起因经常在咱们代码里面见到sizeof(“HEADER”)这类代码来计算常量字符串的长度,例如上次的一个代码review:之所以这么写可能基于以下几点考虑:(1)sizeof()是运算符而不是函数调用,编译时确定而不是运行时执行,因此不占用运行时时间(2)strlen()是GLIBC标准库函数,运行时需要进行......
  • Interval GCD(单点修改线段树)
    细节不少//根据更相减损法gcd(x,y)=gcd(x,y-x)//推广到三项为gcd(x,y,z)=gcd(x,y-x,z-y)//可以推广到n项#include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglong......
  • @Validated和@Valid简单使用
    当使用apifox时,我们需要必传字段做标记,可以使用@NotEmpty(message="id不能为空")同时在入参位置添加@Valid@RequestBody其中@Valid起到关键作用效果图 同时在apifox中 这样测试或者前端去测试接口的时候就知道哪些字段一定要传,哪些是非必要的@NotEmpty引入jar包impor......