牛客網 壓縮演算法

2021-10-03 21:39:38 字數 1251 閱讀 8569

小q想要給他的朋友傳送乙個神秘字串,但是他發現字串的過於長了,於是小q發明了一種壓縮演算法對字串中重複的部分進行了壓縮,對於字串中連續的m個相同字串s將會壓縮為[m|s](m為乙個整數且1<=m<=100),例如字串abcabcabc將會被壓縮為[3|abc],現在小q的同學收到了小q傳送過來的字串,你能幫助他進行解壓縮麼? 

輸入描述:

輸入第一行包含乙個字串s,代表壓縮後的字串。

s的長度<=1000;

s僅包含大寫字母、[、]、|;

解壓後的字串長度不超過100000;

壓縮遞迴層數不超過10層;

輸出描述:

輸出乙個字串,代表解壓後的字串。
輸入例子1:

hg[3|b[2|ca]]f
輸出例子1:

hgbcacabcacabcacaf
例子說明1:

hg[3|b[2|ca]]f−>hg[3|bcaca]f−>hgbcacabcacabcacaf
在進行括號匹配時,將符號'|『也當作正常字元先儲存,

在遇到符號']'時在取出來按照'|'來擷取字串 

#include#include#include#include#include#include#includeusing namespace std;

//切割字串並將數字字串轉換成數值

void getnumandstr(string str, int* num, string* res)

else if(flag_ns&& str[i]!= '|')

} *res = r;

int temp = 0;

len = n.length();

for (int i = 0; i < len; i++)

*num = temp;

}int main()

} else if (s[i] == ']')

else

} if (start&& s[i]!= ']')

tostack += s[i];

else if(s[i]!= ']')

cout << s[i];

} return 0;

}

牛客網演算法之遞迴

1.遞迴本質 遞迴很常見應用很廣,常常看到的遞迴 非常簡潔,但是實現強大。遞迴的表現形式是函式自己呼叫自己,有點繞,所以接下用例子講述下計算機怎麼實現遞迴的。最簡單的例子,求乙個陣列的最大值。這個基本方法是不用遞迴的,可以遍歷一遍,但是強制用遞迴實現。思路 把陣列切一半,左半部分求最大值,右半部分求...

牛客網 華為機試 020 牛客網

密碼要求 1.長度超過8位 2.包括大小寫字母.數字.其它符號,以上四種至少三種 3.不能有相同長度超2的子串重複 說明 長度超過2的子串 一組或多組長度超過2的子符串。每組佔一行 如果符合要求輸出 ok,否則輸出ng 示例1 021abc9000 021abc9abc1 021abc9000 02...

演算法 牛客網前端演算法 30 完

1.返回引數 a 和 b 的邏輯且運算結果 function and a,b 2.完成函式 createmodule,呼叫之後滿足如下要求 1 返回乙個物件 2 物件的 greeting 屬性值等於 str1,name 屬性值等於 str2 3 物件存在乙個 sayit 方法,該方法返回的字串為 g...