zoukankan      html  css  js  c++  java
  • [LeetCode] Encode and Decode Strings

    Encode and Decode Strings 

    Design an algorithm to encode a list of strings to a string. The encoded string is then sent over the network and is decoded back to the original list of strings.

    Machine 1 (sender) has the function:

    string encode(vector<string> strs) {
      // ... your code
      return encoded_string;
    }

    Machine 2 (receiver) has the function:

    vector<string> decode(string s) {
      //... your code
      return strs;
    }

    So Machine 1 does:

    string encoded_string = encode(strs);

    and Machine 2 does:

    vector<string> strs2 = decode(encoded_string);

    strs2 in Machine 2 should be the same as strs in Machine 1.

    Implement the encode and decode methods.

    Note:

    • The string may contain any possible characters out of 256 valid ascii characters. Your algorithm should be generalized enough to work on any possible characters.
    • Do not use class member/global/static variables to store states. Your encode and decode algorithms should be stateless.
    • Do not rely on any library method such as eval or serialize methods. You should implement your own encode/decode algorithm.

    {“abc”,“123”,“d"} -> 3#abc3#1231#d  :res += to_string(str.length()) + "#" + str;

     1 class Codec {
     2 public:
     3 
     4     // Encodes a list of strings to a single string.
     5     string encode(vector<string>& strs) {
     6         string res;
     7         for (auto str : strs) {
     8             res += to_string(str.length()) + "#" + str;
     9         }
    10         return res;
    11     }
    12 
    13     // Decodes a single string to a list of strings.
    14     vector<string> decode(string s) {
    15         vector<string> res;
    16         int idx = 0, pos, size;
    17         while (idx < s.length()) {
    18             pos = s.find('#', idx);
    19             if (pos == string::npos) break;
    20             size = stoi(s.substr(idx, pos-idx));
    21             res.push_back(s.substr(pos+1, size));
    22             idx = pos + 1 + size;
    23         }
    24         return res;
    25     }
    26 };
    27 
    28 // Your Codec object will be instantiated and called as such:
    29 // Codec codec;
    30 // codec.decode(codec.encode(strs));
  • 相关阅读:
    LG2664 树上游戏
    「NOI2007」 货币兑换
    「NOI2012」骑行川藏
    LG4721 【模板】分治 FFT
    LG4783 【模板】矩阵求逆
    test20181019 B君的第二题
    LOJ129 Lyndon 分解
    「NOI2017」泳池
    LG4723 【模板】常系数线性递推
    「AHOI / HNOI2017」礼物
  • 原文地址:https://www.cnblogs.com/easonliu/p/4784912.html
Copyright © 2011-2022 走看看