文章目录

  • 1. 题目
  • 2. 解题

1. 题目

请你设计一个算法,可以将一个 字符串列表 编码成为一个 字符串。
这个编码后的字符串是可以通过网络进行高效传送的,并且可以在接收端被解码回原来的字符串列表。

1 号机(发送方)有如下函数:

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

2 号机(接收方)有如下函数:

vector<string> decode(string s) {//... your codereturn strs;
}
1 号机(发送方)执行:string encoded_string = encode(strs);
2 号机(接收方)执行:vector<string> strs2 = decode(encoded_string);
此时,2 号机(接收方)的 strs2 需要和 1 号机(发送方)的 strs 相同。请你来实现这个 encode 和 decode 方法。

注意:
因为字符串可能会包含 256 个合法 ascii 字符中的任何字符,所以您的算法必须要能够处理任何可能会出现的字符。
请勿使用 “类成员”、“全局变量” 或 “静态变量” 来存储这些状态,您的编码和解码算法应该是非状态依赖的。
请不要依赖任何方法库,例如 eval 又或者是 serialize 之类的方法。本题的宗旨是需要您自己实现 “编码” 和 “解码” 算法。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/encode-and-decode-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 每个字符串前面加上该字符串的长度信息(转成4位16进制字符)
class Codec {public:// Encodes a list of strings to a single string.string encode(vector<string>& strs) {string ans;for(auto& s : strs)ans += numToHexIntStr(s.size())+s;return ans;}// Decodes a single string to a list of strings.vector<string> decode(string s) {vector<string> ans;int n;for(int i = 0; i < s.size(); i += 4+n){n = stoi(s.substr(i,4),0,16);//16进制转成10进制ans.emplace_back(s.substr(i+4,n));}return ans;}string numToHexIntStr(int n){char ch[16];sprintf(ch, "%x", n); // x 16进制,d 10进制, o 8进制string ans = ch;while(ans.size() < 4)ans = '0'+ans;return ans;}
};

68 ms 21.5 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 271. 字符串的编码与解码(4位16进制字符+字符串)相关推荐

  1. QT 实现16进制与字符串互转

    QT 实现16进制与字符串互转 文章目录 QT 实现16进制与字符串互转 前言 一.字符串QString转换16进制 二.16进制转换为字符串QString 三.正则表达式限制输入16进制 四.文本自 ...

  2. 字符串(含中文)转16进制,16进制转字符串(含中文)

    字符串(含中文)转16进制 public static byte[] SendS(String str){byte[] ok = new byte[0]; try {ok = str.getBytes ...

  3. java 16进制字符转10进制_java 16进制字符串怎么转换成10进制字符串

    展开全部 toHexString public static String toHexString(int i)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式. 如果参数为负,那么无符号整 ...

  4. [代码积累]解决HL7协议、TCP/IP通讯、16进制转字符串,中文乱码的问题。

    最近在做一个流水线的接口,连接的是日立生化和雅培化学发光.流水线软件提供商提供了基于HL7的通讯协议,其要求发发送完整的病人信息. 之前和迈瑞等一些国产仪器做LIS接口时,他们提供的通讯方案,也是只支 ...

  5. 16进制和字符串(包括中文)的转换

    package XXXX; import java.io.ByteArrayOutputStream; /**  * Description  字符串(包含中文)和16进制之间的转换  */ publ ...

  6. Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值

    文章目录 前言 简述 ASCII GBK Unicode UTF-8 应用场景 开发环境 编码转换 16进制数值转换为16进制字符 16进制数值转化为字符串 16进制字符串转换为Unicode字符串 ...

  7. C# 16进制与字符串、字节数组之间的转换

    在串口通讯过程中,经常要用到 16进制与字符串.字节数组之间的转换 字符串转16进制字节数组  1         private static byte[] strToToHexByte(strin ...

  8. Java 字符串,byte[],16进制的字符串互转

    Java 字符串,byte[],16进制的字符串互转 /** * 字符串转换成十六进制字符串 */ public static String str2HexStr(String str) { char ...

  9. ByteArray、16进制、字符串之间的转换

    ByteArray.16进制.字符串之间的转换: package fengzi.convert {import flash.utils.ByteArray;public class ByteArray ...

最新文章

  1. [Bash] Search for Text with `grep`
  2. 重构-改善既有代码的设计:处理概括关系 (九)
  3. 更灵活的定位内存地址的方法---汇编学习笔记
  4. CentOS6.0 yum php mcrypt 扩展安装问题
  5. mingw linux socket,MingW上编译WinSocket程序undefined reference to `WSAStartup@8'报错的解决办法...
  6. [Swift通天遁地]三、手势与图表-(10)创建包含圆点、方形、三角形图标的散点图表...
  7. Idea 版本控制冲突解决
  8. Android 开发工具集合 - (Android Dev Tools)
  9. python 串口助手 简书_pySerial 串口工具简介
  10. 【51单片机】74HC595串转并 使用
  11. GPU、CPU、内存、文件流、磁盘的速度之比
  12. 如何使用WPS进行文档内容对比
  13. maven中实现代码单元测试覆盖率统计
  14. python编程处理excel数据_python实现对excel进行数据剔除操作实例
  15. 三进网吧后,我“被跳槽”了!
  16. [Linux Audio Driver] SM6350平台音频bring up ( 一 )
  17. 逆袭之路——python 数据库字符编码与配置、存储引擎、字段类型及约束条件【day46】
  18. java主要用于神摸地方,超级无敌神奇的java期末考试题库
  19. JVM设置Young Gen大小
  20. ImmuCellAI | 免疫浸润计算工具 R包学习

热门文章

  1. 指纹图像方向图matlab,matlab指纹方向场方向图程序
  2. Flow monitoring in Software-Defined Networks
  3. 素数环 与 算法 全排列
  4. 【错误记录】python requests库 Response 判断坑
  5. 处理字符集中的算式问题
  6. final个人阅读作业
  7. 二维码扫描利用ZBar实现
  8. ACM PKU 2559 Largest Rectangle in a Histogram http://acm.pku.edu.cn/JudgeOnline/problem?id=2559
  9. C#正则表达式判断输入日期格式是否正确
  10. 图文讲解5G调制,特别通俗易懂!