首页 > 其他 > 详细

271. 字符串的编码与解码

时间:2020-03-15 00:25:29      阅读:57      评论:0      收藏:0      [点我收藏+]

题目:

 

 

解答:

每个串前用分隔符,分隔符指明数据串的长度。

当然实际中的IP分片是:

在IP首部有4个字节是用于分片的,如下图所示。前16位是IP数据报的标识,同一个数据报的各个分片的标识是一样的,目的端会根据这个标识来判断IP分片是否属于同一个IP数据报。中间3位是标志位,其中有1位用来表示是否有更多的分片,如果是最后一个分片,该标志位为0,否则为1。后面13位表示分片在原始数据的偏移,这里的原始数据是IP层收到的传输的TCP或UDP数据,不包含IP首部。

技术分享图片

 

 

技术分享图片

 

 

class Codec {
public:
    // Encodes a list of strings to a single string.
    string encode(vector<string>& strs) {
        string res="",len,prefix;
        for(auto& str:strs){
            len=to_string(str.size());
            prefix="";//每个字符串前用一个32长度的指示字符串作为分隔,该指示串表示的整数值指示之后的数据串的长度
            if(len.size()<32){
                prefix.assign(32-len.size(),0);
            }
            prefix+=len;
            res+=prefix;
            res+=str;
        }
        return res;
    }

    // Decodes a single string to a list of strings.
    vector<string> decode(string s) {
        int i=0,len;
        vector<string> res;
        while(i<s.size()){
            len=stoi(s.substr(i,32));
            i+=32;
            res.push_back(move(s.substr(i,len)));
            i+=len;
        }
        return move(res);
    }
};

// Your Codec object will be instantiated and called as such:
// Codec codec;
// codec.decode(codec.encode(strs));

技术分享图片

 

271. 字符串的编码与解码

原文:https://www.cnblogs.com/FdWzy/p/12495151.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!