解題**如下:
function
smartrepeat
(templatestr)
elseif(
/^\w+\]/
.test
(rest)
)else
if(rest[0]
===']'
)// console.log(index, stack1, stack2)
}// while 結束之後, stack1 和 stack2 中肯定還剩餘 1 項。返回棧2中剩下的這一項,重複棧1中剩下的這一項的次數,組中的這個字串。
// 如果剩的個數不對,那就是使用者的問題,方括號沒有閉合
return stack2[0]
.repeat
(stack1[0]
)}let newstr =
smartrepeat
('3[2[abc]2[d]]'
) console.
log(newstr)
// abcabcddabcabcddabcabcdd
Momenta筆試題 最小棧
實現乙個最小棧,有三種操作,min 得到棧中的最小值 push 在棧頂插入乙個元素 pop 彈出棧頂元素,使這三種操作的時間複雜度都是o 1 要求 語言不限 輸入描述 第一行是乙個數q,接下來q行每行表示乙個操作,每行首先是操作op 若op 0,則輸出當前棧中的最小值 若op 1,表示push,接著...
鍊錶相關筆試題 一
1.從尾到頭列印單鏈表 方法一 可以用棧實現,遍歷鍊錶,每經過乙個結點,把該結點放入棧中,當遍歷完整個鍊錶後,從棧頂開始逐個輸出結點的值,此時輸出的結點的順序就反轉過來了 實現 void printtailtohead listnode phead while nodes.empty 方法二 用遞迴...
棧的相關面試題
完整 用乙個額外的棧存放當前棧的最小值。push 當資料棧入元素時做乙個判斷,如果元素小於等於最小棧的棧頂元素,就給兩個元素都入棧。pop 資料棧出元素時,若兩個棧頂元素相等,則兩個棧都出元素,否則只出資料棧。乙個棧入元素,乙個棧出元素。pop 出元素時,如果為空則需要將棧a元素倒到b棧。額外考慮兩...