【安卓】騰訊2020校園招聘-後臺
阿新 • • 發佈:2020-06-27
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; }