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));
  • 相关阅读:
    gitlab + gitlab-runner 实现项目的自动化部署测试环境与打包
    docker 部署 zookeeper 集群
    CSS 使用id属性的规则
    SimpleXML使用详解
    PHP通用分页类
    MYSQL远程连接速度慢的解决方法
    远程连接mysql出现1045错误的解决办法
    Bootstrap 元素居中设置
    PHP 时间戳
    html代码/如何做到有横线无竖线的表格/或横线有颜色/竖线没颜色
  • 原文地址:https://www.cnblogs.com/easonliu/p/4784912.html
Copyright © 2011-2022 走看看