机试题只有AC20%,但是目前没看到原因
我看有人说是16进制的原因,但是输出也是16进制,是不用转换的吧。因为我全部都是用的String,不存在说数据被我转成了10进制
报文转义功能
报文中如果出现0x0A,转义成两个字节0x12 0x34,如果出现0x0B,转义成两个字节0xAB,0xCD,其他报文保持不变
输出的第一个字节为报文长度(包含它自己)
就是如果输入A就转义成12 34,如果输入B就转义成AB CD
package com.java.huaweiexam;
import java.util.Scanner;
/**
* @author dengtiantian
*/
public class Test2 {
static void function(String str){
str = str.toUpperCase();
if (str.length()==0){
return;
}
String[] strings = str.split(" ");
if (Integer.parseInt(strings[0])>127){
return;
}
StringBuilder sb = new StringBuilder();
int count = 0;
for (int i = 1; i<Integer.parseInt(strings[0]);i++){
if ("A".equals(strings[i].trim()) || "0x0A".equals(strings[i].trim()) || "0A".equals(strings[i].trim())){
count = count+2;
sb.append("12").append(" ").append("34").append(" ");
}else if ("B".equals(strings[i].trim()) ||"0x0B".equals(strings[i].trim()) || "0B".equals(strings[i].trim())){
count = count+4;
sb.append("AB").append(" ").append("CD").append(" ");
}else {
count++;
sb.append(strings[i]).append(" ");
}
}
String temp = String.valueOf(count+1) +" "+new String(sb);
temp.trim();
System.out.println(temp.toUpperCase());
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
String str = sc.nextLine();
function(str);
}
}
}