華為OD機試-- 報文解壓縮
題目
為了提升數(shù)據(jù)傳輸?shù)男剩瑫鬏數(shù)膱笪倪M行壓縮處理。
輸入一個壓縮后的報文,請返回它解壓后的原始報文。
壓縮規(guī)則:n[str],表示方括號內(nèi)部的 str 正好重復(fù) n 次。
注意 n 為正整數(shù)(0 < n <= 100),str只包含小寫英文字母,不考慮異常情況。
輸入描述:
輸入壓縮后的報文:
1)不考慮無效的輸入,報文沒有額外的空格,方括號總是符合格式要求的;
2)原始報文不包含數(shù)字,所有的數(shù)字只表示重復(fù)的次數(shù) n ,例如不會出現(xiàn)像 5b 或 3[8] 的輸入;
輸出描述:
解壓后的原始報文
注:
1)原始報文長度不會超過1000,不考慮異常的情況
示例 1? ?輸入輸出示例僅供調(diào)試,后臺判題數(shù)據(jù)一般不包含示例
輸入
3[k]2[mn]
輸出
kkkmnmn
說明
k 重復(fù)3次,mn 重復(fù)2次,最終得到 kkkmnmn
1:遍歷字符串的同時保持原先的狀態(tài),由于還有嵌套的結(jié)構(gòu),因此想到了使用棧這個數(shù)據(jù)結(jié)構(gòu)。
2:四種情況需要考慮
數(shù)字
字母
[ 符號
] 符號
示例2 輸入輸出示例僅供調(diào)試,后臺判題數(shù)據(jù)一般不包含示例
輸入
3[m2[c]]
輸出
mccmccmcc
說明
m2[c] 解壓縮后為 mcc,重復(fù)三次為 mccmccmcc
Java 實現(xiàn):https://renjie.blog.csdn.net/article/details/128085502
Python實現(xiàn):https://renjie.blog.csdn.net/article/details/128356577
C++ 實現(xiàn):https://renjie.blog.csdn.net/article/details/127186223
JavaScript實現(xiàn):https://renjie.blog.csdn.net/article/details/131972444
C實現(xiàn):https://renjie.blog.csdn.net/article/details/129190260