給定乙個經過編碼的字串,返回它解碼後的字串。
編碼規則為:k[encoded_string]
,表示其中方括號內部的encoded_string
正好重複k
次。注意k
保證為正整數。
你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。
此外,你可以認為原始資料不包含數字,所有的數字只表示重複的次數k
,例如不會出現像3a
或2[4]
的輸入。
示例:
s = 「3[a]2[bc]」, 返回 「aaabcbc」.首先,把乙個括號中的所有內容看成乙個整體,一次遞迴函式返回一對括號中解碼後的字串;s = 「3[a2[c]]」, 返回 「accaccacc」.
s = 「2[abc]3[cd]ef」, 返回 「abcabccdcdcdef」.
其次,給定的編碼字串實際上只有四種字元,數字,字母和左右括號,所以開始用乙個變數i
從0
開始遍歷到字串的末尾,由於左括號都是跟在數字後面,所以先遇到的字元只能是數字或者字母,如果是字母,直接存入結果中,如果是數字,迴圈讀入所有的數字,並正確轉換,那麼下一位非數字的字元一定是左括號,指標右移跳過左括號,對之後的內容呼叫遞迴函式求解;
再次,注意迴圈的停止條件是遍歷到末尾和遇到右括號,由於遞迴呼叫的函式返回了子括號裡解碼後的字串,而我們之前把次數也已經求出來了,那麼迴圈新增到結果中即可。
class
solution
string decode
(string s,
int& i)
else
++i;
string t =
decode
(s, i)
;++i;
while
(cnt--
>0)
}}return res;}}
;
字串 leetcode 43 字串相乘
給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...
棧 字串 leetcode394 字串解碼
題目 解題思路 遍歷字串,如果遇到的是數,則把數存入num 如果遇到的是左括號,那麼將num壓入數棧,將左括號前面的字串ans壓入字串棧,然後將num清0,將ans也清空 如果遇到的是右括號,那麼將數棧的棧頂數彈出記為 k,然後將當前的ans重複k次,連線到字串棧的棧頂字串後面,然後將字串棧的棧頂字...
LeetCode43 字串相乘
給定兩個以字串形式表示的非負整數num1和num2,返回num1和num2的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 題目分析 如果兩個字串中有乙個為0,則結果是0 否則的話,將其中乙...