領扣 解壓字串

2021-10-11 09:29:39 字數 1232 閱讀 7589

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

s的長度<=1000;

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

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

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

樣例

輸入 : 「hg[3|b[2|ca]]f」

輸出 : 「hgbcacabcacabcacaf」

解釋 : hg[3|b[2|ca]]f −−> hg[3|bcaca]f −−> hgbcacabcacabcacaf

解答:

一般情況下,若碰到類似括號匹配相關的問題,我們需要借助棧來實現我們的目的。

下面直接看原始碼來了解詳細思路。

class

solution

// 為了方便返回字串,此處採用vector容器當做棧使用而不是stack

std::vector<

char

> s;

for(

int i =

0; i < message.

size()

; i++

)// 若遇到'|',表示接下來是數字

else

if(s.

back()

=='|'

)else

// 數字插入注意順序

else

if(next == number)

} s.

pop_back()

;}// 將已經解析完的資料重新入棧

if(strn.

size()

&& str.

size()

)}}}

else

}// 此時容器中已經是完整還原的字串

return std::

string

(s.begin()

, s.

end())

;}const

int number =1;

const

int charactor =2;

};

解壓字串

問題描述 有一種簡單的字串壓縮方法,對於字串連續出現的同乙個字元,用該字串加上連續出現 的次數來表示 連續出現次數小於3時不壓縮 例如,字串aaaaabbbabaaaaaaaaaaaaabbbb可 壓縮為a5b3aba13b4。請設計乙個程式,將採用該壓縮方法得到字串的解壓縮,還原出原字串並輸出。輸...

領扣43 字串相乘

原題 給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。解題思路 將我們現實中使用的乘法運算步驟進行分解之後求結果 乘法運算可以看成是num1和num2從後往前依次相乘 在進行一次相乘後會得到乙個字串結果,將結果求和 注意 在...

領扣LintCode問題答案 8 旋轉字串

領扣lintcode問題答案 8.旋轉字串 給定乙個字串 以字元陣列的形式給出 和乙個偏移量,根據偏移量原地旋轉字串 從左向右旋轉 offset 0 the length of str 0 make changes on the original input data 原地旋轉意味著你要在s本身進行...