LeetCode0394 字串解碼

2021-10-03 13:16:58 字數 1060 閱讀 8036

給定乙個經過編碼的字串,返回它解碼後的字串。

編碼規則為:k[encoded_string],表示其中方括號內部的encoded_string正好重複k次。注意k保證為正整數。

你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。

此外,你可以認為原始資料不包含數字,所有的數字只表示重複的次數k,例如不會出現像3a2[4]的輸入。

示例:

s = 「3[a]2[bc]」, 返回 「aaabcbc」.

s = 「3[a2[c]]」, 返回 「accaccacc」.

s = 「2[abc]3[cd]ef」, 返回 「abcabccdcdcdef」.

首先,把乙個括號中的所有內容看成乙個整體,一次遞迴函式返回一對括號中解碼後的字串;

其次,給定的編碼字串實際上只有四種字元,數字,字母和左右括號,所以開始用乙個變數i0開始遍歷到字串的末尾,由於左括號都是跟在數字後面,所以先遇到的字元只能是數字或者字母,如果是字母,直接存入結果中,如果是數字,迴圈讀入所有的數字,並正確轉換,那麼下一位非數字的字元一定是左括號,指標右移跳過左括號,對之後的內容呼叫遞迴函式求解;

再次,注意迴圈的停止條件是遍歷到末尾和遇到右括號,由於遞迴呼叫的函式返回了子括號裡解碼後的字串,而我們之前把次數也已經求出來了,那麼迴圈新增到結果中即可。

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 否則的話,將其中乙...