棧
棧---后進(jìn)先出
在Java里有一個(gè)Vector的子類Stack()實(shí)現(xiàn)了棧。
Stack()方法
- boolean empty()
判空 - Object peek( )
查看棧頂對(duì)象 - Object pop( )
移除棧頂對(duì)象 - Object push(Object element)
把項(xiàng)壓入堆棧頂部 - int search(Object element)
返回對(duì)象在棧中的位置
leetCode No.20 題
鏈接:https://leetcode-cn.com/problems/valid-parentheses
給定一個(gè)只包括 '('仔掸,')','{'菇曲,'}'忿墅,'[',']' 的字符串 s 桂对,判斷字符串是否有效。
有效字符串需滿足:
左括號(hào)必須用相同類型的右括號(hào)閉合倦卖。
左括號(hào)必須以正確的順序閉合洒擦。
示例:
輸入:s = "()"
輸出:true
class Solution {
public boolean isValid(String s) {
int n = s.length();
if (n % 2 == 1) {
return false;
}
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < n; i++) {
char ch = s.charAt(i);
if(ch == '(' ||ch =='[' || ch =='{'){
stack.push(ch);
}else if(stack.empty()){
return false;
}else if(ch == ')' && stack.peek() == '('){
stack.pop();
}else if(ch == ']' && stack.peek() == '['){
stack.pop();
}else if (ch == '}' && stack.peek() == '{'){
stack.pop();
}else {
return false;
}
}
return stack.empty();
}
}
更好的方法可能更多,大家加油