91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

字符串壓縮存儲策略在C++中

發布時間:2024-10-09 17:45:19 來源:億速云 閱讀:84 作者:小樊 欄目:編程語言

在C++中,字符串壓縮存儲策略可以通過使用字符數組和計數器來實現。這種策略通常用于存儲重復字符序列,其中每個字符后面跟著表示該字符重復次數的數字。以下是一個簡單的實現示例:

#include <iostream>
#include <vector>

std::string compressString(const std::string& input) {
    if (input.empty()) return "";

    std::vector<char> compressed;
    int count = 1;

    for (size_t i = 1; i <= input.size(); ++i) {
        if (i == input.size() || input[i] != input[i - 1]) {
            compressed.push_back(input[i - 1]);
            if (count > 1) {
                // 將計數器轉換為字符串并附加到壓縮數據中
                compressed.insert(compressed.end(), std::to_string(count).begin(), std::to_string(count).end());
            }
            count = 1;
        } else {
            ++count;
        }
    }

    // 如果壓縮后的數據為空(即沒有重復字符),則返回原始字符串
    if (compressed.empty()) return input;

    // 將壓縮數據轉換回字符串
    std::string result;
    for (size_t i = 0; i < compressed.size();) {
        result.push_back(compressed[i]);
        if (compressed[i] != '0') { // 忽略尾隨零
            size_t end = i + 1;
            while (end < compressed.size() && isdigit(compressed[end])) {
                ++end;
            }
            result.append(compressed.begin() + i + 1, compressed.begin() + end);
            i = end;
        } else {
            ++i;
        }
    }

    return result;
}

int main() {
    std::string input = "aaabbbbcccddeee";
    std::string compressed = compressString(input);
    std::cout << "Compressed: " << compressed << std::endl; // 輸出: a3b4c3d3e3
    return 0;
}

這個示例中的compressString函數接受一個字符串作為輸入,并返回一個壓縮后的字符串。它使用一個字符數組compressed來存儲壓縮數據,并使用一個計數器count來跟蹤每個字符的重復次數。在遍歷輸入字符串時,它會檢查當前字符是否與前一個字符相同,并相應地更新計數器和壓縮數據。最后,它將壓縮數據轉換回字符串并返回。

需要注意的是,這種壓縮策略并不總是能產生更小的字符串。在某些情況下,壓縮后的字符串可能比原始字符串更長。因此,在實際應用中,您可能需要根據具體情況權衡壓縮效果和額外開銷。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

旬阳县| 定西市| 黄大仙区| 万年县| 古丈县| 沈丘县| 太康县| 莱阳市| 明水县| 黔江区| 昌乐县| 苏尼特右旗| 渝中区| 内乡县| 堆龙德庆县| 慈利县| 曲麻莱县| 延津县| 广南县| 绩溪县| 思茅市| 彰化县| 怀来县| 津南区| 安平县| 沧源| 通渭县| 墨竹工卡县| 麻江县| 丹棱县| 安龙县| 安丘市| 邯郸县| 遂溪县| 农安县| 海林市| 延安市| 敦化市| 新平| 靖江市| 屏山县|