作者:~小明学编程
文章专栏:每日一练——Java
格言:目之所及皆为回忆,心之所想皆为过往
目录
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
- class Solution {
- private char match(char ch) {
- if (ch==')') {
- return '(';
- } else if (ch==']') {
- return '[';
- } else {
- return '{';
- }
- }
- public boolean isValid(String s) {
- Stack
stack = new Stack<>(); - for (int i=0;i
- char ch = s.charAt(i);
- if (ch=='('||ch=='['||ch=='{') {
- stack.push(ch);
- } else {
- //如果栈空直接返回
- if (stack.empty()) {
- return false;
- } else {
- //判断是否匹配,匹配则出栈
- if (match(ch)==stack.peek()) {
- stack.pop();
- } else {
- return false;
- }
- }
- }
- }
- //判断是否匹配完毕
- if (stack.empty()) {
- return true;
- } else {
- return false;
- }
-
- }
- }
最小栈
链接:
题目描述:
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
示例 1:
输入:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]
输出:
[null,null,null,null,-3,null,0,-2]
解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.
代码:
- class MinStack {
- private Stack
minstack = new Stack<>(); - private int[] elem;
- private int usedSize=0;
- public MinStack() {
- this.elem = new int[10000];
- }
-
- public void push(int val) {
- this.elem[this.usedSize++]=val;
- if (minstack.empty()) {
- minstack.push(val);
- } else {
- if (val<=minstack.peek()) {
- minstack.push(val);
- }
- }
- }
-
- public void pop() {
- if (minstack.peek() == this.elem[usedSize-1]) {
- minstack.pop();
- }
- this.usedSize--;
- }
-
- public int top() {
- return this.elem[usedSize-1];
- }
-
- public int getMin() {
- return minstack.peek();
- }
- }
-
- /**
- * Your MinStack object will be instantiated and called as such:
- * MinStack obj = new MinStack();
- * obj.push(val);
- * obj.pop();
- * int param_3 = obj.top();
- * int param_4 = obj.getMin();
- */