題目描述
給定乙個經過編碼的字串,返回它解碼後的字串。
編碼規則為: k[encoded_string],表示其中方括號內部的 encoded_string 正好重複 k 次。注意 k 保證為正整數。
你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。
此外,你可以認為原始資料不包含數字,所有的數字只表示重複的次數 k ,例如不會出現像 3a 或 2[4] 的輸入。
示例1輸入:s = 「3[a]2[bc]」
輸出:「aaabcbc」
示例2思路輸入:s = 「3[a2[c]]」
輸出:「accaccacc」
本題用棧來解決,用乙個整形變數作為指標來遍歷字串,然後依次進行入棧和出棧的操作,具體情況如下:如果當前的字元是數字,則將數字(可能是二位數、三位數等)轉化為字串**棧;如果遇到了字母或者左括號,則直接入棧;如果遇到了右括號,則將指標加1,並且將字串放到乙個子棧中,然後處理左括號直接彈棧,左括號的左邊是數字,取出該數字後對字串進行處理,先將子棧中的字元進行翻轉,然後將字串新增到stringbuilder中,向棧中繼續新增該轉化後的字串,最後遍歷一遍棧,並進行拼接,返回,時間複雜度為o(n)。
**
class
solution
else
if(character.
isletter
(cur)
|| cur ==
'[')
//碰到了右括號
else
//左括號彈棧
stack.
removelast()
;int rep = integer.
parseint
(stack.
removelast()
);collections.
reverse
(sub)
; string o =
getstring
(sub)
; stringbuilder sb =
newstringbuilder()
;while
(rep>0)
stack.
addlast
(sb.
tostring()
);}}
return
getstring
(stack);}
public string getdigit
(string s)
return sb.
tostring()
;}public string getstring
(linkedlist
v)return sb.
tostring()
;}}
每日一題 字串
題目描述 小n現在有乙個字串s。他把這這個字串的所有子串都挑了出來。乙個s的子串t是合法的,當且僅當t中包含了所有的小寫字母。小n希望知道所有的合法的s的子串中,長度最短是多少。輸入描述 一行乙個字串s。只包含小寫字母。s的長度不超過1e6.輸出描述 一行乙個數字,代表最短長度。資料保證存在乙個合法...
每日一題 字串相加(C )
題目描述 給定兩個字串形式的非負整數 num1 和num2 計算它們的和。1.num1 和num2 的長度都小於 5100 2.num1 和num2 都只包含數字 0 9 3.num1 和num2 都不包含任何前導零 4.你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數...
Leedcode 每日一題 字串的排序
給定兩個字串s1和s2,寫乙個函式來判斷s2是否包含s1的排列。換句話說,第乙個字串的排列之一是第二個字串的子串。示例1 輸入 s1 ab s2 eidbaooo 輸出 true解釋 s2 包含 s1 的排列之一 ba 示例2 輸入 s1 ab s2 eidboaoo 輸出 false注意 輸入的字...