題目:
給定乙個經過編碼的字串,返回它解碼後的字串。
編碼規則為: 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".
解題方法:棧
func decodestring(s string) string
ptr := 0
for ptr < len(s) else if (cur >= 'a' && cur <= 'z' || cur >= 'a' && cur <= 'z') || cur == '[' else
for stk[len(stk)-1] != "["
for i := 0; i < len(sub)/2; i++
// 左括號出棧
stk = stk[:len(stk)-1]
reptime, _ := strconv.atoi(stk[len(stk)-1])
// 數字出棧
stk = stk[:len(stk)-1]
t := strings.repeat(getstring(sub), reptime)}}
return getstring(stk)
}func getdigits(s string, ptr *int) string
return ret
}func getstring(v string) string
return ret
}
golang 面試題(七)小公尺麵試題,字串
給出乙個字串s 僅含有小寫英文本母和括號 請你按照從括號內到外的順序,逐層反轉每對匹配括號中的字串,並返回最終的結果。注意,您的結果中 不應 包含任何括號。示例1 輸入 s abcd 輸出 dcba 示例2 輸入 s u love i 輸出 iloveu s uevoli iloveu 示例3 輸入...
小公尺麵試題 Git樹分割點
git是一種分布式 管理工具,git通過樹的形式記錄檔案的更改歷史,比如 base base a a b b 小公尺工程師常常需要尋找兩個分支最近的分割點,即base.假設git 樹是多叉樹,請實現乙個演算法,計算git樹上任意兩點的最近分割點。假設git樹節點數為n,用鄰接矩陣的形式表示git樹 ...
小公尺麵試題 手機分身,電話號碼隱藏。
小公尺麵試題 手機分身,號碼隱藏。0 9分別對應zero,one,two,nine 為保證手機撥號安全性,撥號後,存為對應的字串,並打亂順序,保證安全性。現在給定乙個字串,求最小的數字組合 例 twoone otnwoe 1212 分析 關鍵字搜尋 第一次第二次 第三次0 zero z1 one o...