日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/7/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 271. 字符串的编码与解码(4位16进制字符+字符串) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 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进制字符+字符串)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。