华为OD机试 - 模拟数据序列化传输

题目描述

模拟一套简化的序列化传输方式,请实现下面的数据编码与解码过程

编码前数据格式为 [位置,类型,值],多个数据的时候用逗号分隔,位置仅支持数字,不考虑重复等场景;类型仅支持:Integer / String / Compose(Compose的数据类型表示该存储的数据也需要编码)

编码后数据参考图示,数据区的格式是:位置#类型#长度#数据,类型存储需要编码,Integer->0;String->1;Compose->2,长度是指数据的字符长度;数据仅允许数字、大小写字母、空格。

输入的编码字符长度不能超过1000,一个数据的格式错误,则解析剩下数据,其他错误输出ENCODE_ERROR。

输入的解码字符不能超过1000,数据区异常则跳过继续解析剩余数据区,其他异常输出DECODE_ERROR。

输入描述

输入有两行:

第一行是命令,1表示编码,2表示解码, 第二行输入待编码、解码的字符

数据最多嵌套10层,[1,Compose,[1,String,Second]] 为2层嵌套

输出描述

如果输入要求是编码,则输出编码结果;如果输入要求是解码,则输出解码结果;当异常时输出对应的错误字符

示例1

import Foundation

func ODTest_2_15() {
    print("输入有两行:")
    print("第一行是命令,1表示编码,2表示解码")
    let code = Int(readLine() ?? "") ?? 0

    print("第二行输入待编码、解码的字符")
    print("数据最多嵌套10层,[1,Compose,[1,String,Second]] 为2层嵌套")
    let strings = (readLine() ?? "")

    print("输出描述")
    print("如果输入要求是编码,则输出编码结果;如果输入要求是解码,则输出解码结果;当异常时输出对应的错误字符")

    if code == 1 {
        print(encodeData(strings))
    } else if code == 2 {
        print(decodeData(strings))
    } else {
        print("DECODE_ERROR")
    }
}

// [1,String,I am Mary],[2,Integer,23],[3,Long,1000000],[4,Compose,[1,String,I am Kitty],[2,Integer,44]]
// 1#1#9#I am Mary2#0#2#234#2#25#1#1#10#I am Kitty2#0#2#44
func replaceEncodeSubrange(_ encodeContent: inout String, _ range: Range<String.Index>) {
    let matchContent = String(encodeContent[range])
    let matchs = matchContent
        .replacingOccurrences(of: "[", with: "")
        .replacingOccurrences(of: "]", with: "")
        .split(separator: ",").map { String($0) }
    if matchs.count == 3 {
        var replaceString = "\(matchs[0])#"
        switch matchs[1] {
        case "Integer":
            replaceString += "0"
        case "String":
            replaceString += "1"
        case "Compose":
            replaceString += "2"
        default:
            replaceString = ""
        }
        if !replaceString.isEmpty {
            replaceStri

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024华为OD机试卷题 文章被收录于专栏

本专栏给大家提供了华为2024最新华为OD 题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论

相关推荐

04-28 11:34
西北大学 运营
牛客4396号:不好意思,这个照片猛一看像丁真
点赞 评论 收藏
分享
05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务