輸入一串字串,只包含』(』 , 『)』 , 『[』 , 『]』 , 『』 這六種字元,現要判斷字串是否有效。有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
示例:
輸入:(){}
([)]
輸出:true
false
true
用棧解決即可,遍歷字串,每次遇到左括號就入棧,遇到右括號則出棧到棧頂彈出對應的左括號;
當最終遍歷完成後,若棧不為空,則為false;棧為空,則為true。
個人**:
public
boolean
solute
(string str)
else
return
false;}
stack.
pop();
}else
if(c==
']')
else
return
false;}
stack.
pop();
}else
if(c==
'}')
else
return
false;}
stack.
pop();
}}}return stack.
isempty()
;}
這個**只有80%的通過率,暫時不知道原因。
leetcode題解:
public
boolean
solute4
(string str)
else';
}}if(p>=0)
return
false
;return
true
;}
該題解使用陣列來替代棧的操作,每當遇到左括號時就將對應右括號入棧,然後如果遇到右括號且棧頂元素與該右括號相同則出棧,否則棧頂指標+1。但是這個寫法無法通過全部的示例,因為它只是將索引減小,但不對陣列內的元素進行彈出操作,因此當示例為 「()))" 的形式時,會返回 true ,但結果是顯而易見的 false。因此將其改回stack或者新增彈出操作。
陣列形式:彈出之後清除索引資料
public
boolean
isvalid
(string s)
else';
else
if(c==
'[')
stack[p]
=']';}
}return p>=0?
false
:true
;}
用棧實現:
public
boolean
isvalid2
(string s)
else')
;else
if(c==
'[')
stack.
push
(']');
//不符合的就填入不可能被清空的值
else
stack.
push
('0');
}}//彈出初始的棧頂元素『0』
stack.
pop();
return stack.
isempty()
;}
2020屆秋招中興筆試題
在本人堅持不懈的努力刷題下,終於發現題目的 了。leetcode題目為 49.字母異位詞分組,有興趣的同學可以對比學習。題目的大致意思是 超市賣東西,然後統計那些商品相同的組合。例如 abcd 與 bacd 是不同商品的組合,可以歸於同乙個類別 要求統計出,出現次數多於一次的商品組合類別,有助於幫助...
筆試 浪潮集團2020秋招研發卷
第1題 更新遞增1子串行的長度 num 1 cout n maxr endl system pause 通過率為91 第2題 python版本 intput 1 raw input intput 2 map int,raw input split dict1 dict2 for i in range...
2020秋招筆試 複雜異或問題
給定乙個序列an,下標從1開始直到n,定義了以下式子 現在要求下式的值 小提示 樣例解釋 這裡考察的是異或操作。首先注意到異或是支援交換律的,可將待求解的值分為兩個部分 將ai全部交換到一起求出異或值,這是由輸入序列確定的部分結果 還剩下乙個n n的餘數矩陣,它們整體異或到一起構成輸入序列個數確定的...