华为OD机试-报文转换 只有20%通过率。但是没没找到未通过原因

机试题只有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);
        }
    }
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值