2024/9/16 LeetCode Hot100 Stack

This commit is contained in:
Cool 2024-09-16 19:49:11 +08:00
parent 94ad2b4248
commit 8999e23702
2 changed files with 88 additions and 0 deletions

View File

@ -0,0 +1,47 @@
package com.cool.hot100.stack;
import java.util.Stack;
/**
* Created with IntelliJ IDEA.
*
* @Author: Cool
* @Date: 2024/09/16/13:55
* DayNumber 1
* Hard 2
* Level 4
* @Description LeetCode 151题
*/
public class MinStack {
private Stack<Integer> stack;
private Stack<Integer> minStack;
public MinStack() {
stack=new Stack<>();
minStack=new Stack<>();
}
public void push(int val) {
stack.push(val);
if(minStack.isEmpty()||minStack.peek()>=val){
minStack.push(val);
}
}
public void pop() {
if(stack.pop().equals(minStack.peek())){
minStack.pop();
}
}
public int top() {
return stack.peek();
}
public int getMin() {
return minStack.peek();
}
}

View File

@ -0,0 +1,41 @@
package com.cool.hot100.stack;
import java.util.Stack;
/**
* Created with IntelliJ IDEA.
*
* @Author: Cool
* @Date: 2024/09/16/17:52
* DayNumber 2
* Hard 2
* Level 6
*/
public class Num394 {
public String decodeString(String s) {
StringBuilder res = new StringBuilder();
int multi = 0;
Stack<Integer> multiStack = new Stack<>();
Stack<String> resStack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '[') {
multiStack.push(multi);
multi = 0;
resStack.push(res.toString());
res = new StringBuilder();
} else if (c == ']') {
int currentMulti = multiStack.pop();
StringBuilder temp = new StringBuilder();
for (int i = 0; i < currentMulti; i++) {
temp.append(res);
}
res = new StringBuilder(resStack.pop() + temp);
} else if (c >= '0' && c <= '9') {
multi = multi * 10 + Integer.parseInt(c + "");
} else {
res.append(c);
}
}
return res.toString();
}
}