1. 程式人生 > 實用技巧 >【安卓】騰訊2020校園招聘-後臺

【安卓】騰訊2020校園招聘-後臺

1. [程式設計題]壓縮演算法

解題思路

本題是對遞迴思想的考察。根據題意抽取出遞迴函式的行為:
每次讀入一個字元,直到遇到]或輸入結束;對每次讀入的字元進行判斷,如果是大寫字母,就準備輸出;如果是[,就接下來讀入重複次數count|,對於剩下的輸入,遞迴呼叫decompress()獲取被重複的字串,然後將該字串重複count次;最後返回所有待輸出的字串。可以用stringstream來實現字串的拼接。

AC程式碼

#include <iostream>
#include <string>
#include <sstream>

std::string decompress() {
    std::ostringstream ss;
    char c;
    int count;
    while (std::cin >> c) {
        if (c >= 'A' && c <= 'Z') {
            ss << c;
        } else if (c == '[') {
            std::cin >> count;
            std::cin >> c;
            std::string tmp = decompress();
            while (count--) {
                ss << tmp;
            }
        } else if (c == ']') {
            break;
        }
    }
    return ss.str();
}

int main() {
    std::cout << decompress();
    return 0;
}