LeetCode 271. 字符串的编码与解码(4位16进制字符+字符串)
发布日期:2021-07-01 03:30:04
浏览次数:2
分类:技术文章
本文共 1628 字,大约阅读时间需要 5 分钟。
文章目录
1. 题目
请你设计一个算法,可以将一个 字符串列表 编码成为一个 字符串。
这个编码后的字符串是可以通过网络进行高效传送的,并且可以在接收端被解码回原来的字符串列表。1 号机(发送方)有如下函数:
string encode(vectorstrs) { // ... your code return encoded_string;}
2 号机(接收方)有如下函数:
vectordecode(string s) { //... your code return strs;}
1 号机(发送方)执行:string encoded_string = encode(strs);2 号机(接收方)执行:vectorstrs2 = 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& strs) { string ans; for(auto& s : strs) ans += numToHexIntStr(s.size())+s; return ans; } // Decodes a single string to a list of strings. vector decode(string s) { vector 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
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
转载地址:https://michael.blog.csdn.net/article/details/107571561 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月14日 19时07分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LINUX CP命令详解
2019-05-01
source insight快捷键及使用技巧
2019-05-01
映 射 ALT 键
2019-05-01
vim使用快捷键F4生成文件头注释、F5生成main函数模板、F6生成.h文件框架模板
2019-05-01
用python解析html
2019-05-01
OV5620的视频驱动
2019-05-01
C++中两个类交叉定义或递归定义的解决办法
2019-05-01
ECharts is not Loaded解决方案
2019-05-01
ECharts地图显示不完整,只显示南海诸岛问题
2019-05-01
echarts切换tab时,第一个图表显示,第二个图表不显示的解决办法
2019-05-01
记一次Hive 行转列 引起的GC overhead limit exceeded
2019-05-01
OpenGL ES八 - 交叉存取顶点数据
2019-05-01
crontab定时任务写法
2019-05-01
nginx: [emerg] unknown directive "if($remote_addr" in /usr/local/tools/nginx/conf/nginx.conf:57
2019-05-01
module pip has no attribute main问题解决
2019-05-01
LeetCode 134.Gas Station (加油站)
2019-05-01
Python之命名元组 (namedtuple)
2019-05-01
使用libpcap过滤arp
2019-05-01
在VC环境中调试跟踪变量
2019-05-01