給定乙個經過編碼的字串,返回它解碼後的字串。
編碼規則為: k[encoded_string],表示其中方括號內部的 encoded_string 正好重複 k 次。注意 k 保證為正整數。
你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。
此外,你可以認為原始資料不包含數字,所有的數字只表示重複的次數 k ,例如不會出現像 3a 或 2[4] 的輸入。
示例 1:
輸入:s = "3[a]2[bc]"
輸出:"aaabcbc"
示例 2:輸入:s = "3[a2[c]]"
輸出:"accaccacc"
示例 3:輸入:s = "2[abc]3[cd]ef"
輸出:"abcabccdcdcdef"
示例 4:輸入:s = "abc3[cd]xyz"
輸出:"abccdcdcdxyz"
棧應用
用兩個棧分別儲存重複的次數、括號以及重複的字串
我們用乙個變數now記錄當前需要重複的字串。
如果是數字,我們需要壓入數字及之後的左括號,同時將now設為空。
字母我們需要用now進行堆積,
如果是],我們需要判定棧頂是不是[,如果不是我們首先需要把字串進行拼接,直至棧頂為左括號,然後再彈出數進行重疊,之後再壓入棧中。是[,則直接進行重複,然後壓入棧中。
詳細過程見**
string decodestring
(string s)
else num.
push
(stoi
(now));
op.push
("[");
now ="";
}else
if(s[i]
==']')}
if(op.
top()!=
"[")
op.push
(newnow)
; num.
pop();
}else
if(op.
top()!=
"[")
op.push
(newnow);}
now ="";
}else
if(s[i]
>=
'0'&& s[i]
<=
'9')
op.push
(now)
; now ="";
}while
(i>=
'0'&& s[i]
<=
'9')
now +
= s[i++];
i--;}
else
}return op.
top(
)+now;
}
Leetcode 394 字串解碼
給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不包...
LeetCode 394 字串解碼
給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...
LeetCode 394 字串解碼
給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...