class Solution {
public boolean isValid(String s) {
char[] chars = s.toCharArray();
if(chars.length%2==1){
return false;
}
Stack<Character> characterStack = new Stack<>();
for(int i=0;i<chars.length;i++){
if(characterStack.isEmpty()){
if(chars[i] == ')' || chars[i] == '}' || chars[i] == ']'){
return false;
}else{
characterStack.push(chars[i]);
}
}else{
if(characterStack.peek() == '(' && chars[i] == ')'
|| characterStack.peek() == '{' && chars[i] == '}'
|| characterStack.peek() == '[' && chars[i] == ']' ){
characterStack.pop();
}else {
characterStack.push(chars[i]);
}
}
}
return characterStack.isEmpty();
}
}
1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)
class Solution {
public String removeDuplicates(String s) {
char[] chars = s.toCharArray();
Stack<Character> stack = new Stack<>();
for(int i=0;i<chars.length;i++){
if(stack.isEmpty()){
stack.push(chars[i]);
}else{
if(stack.peek() == chars[i]){
stack.pop();
}else {
stack.push(chars[i]);
}
}
}
char[] result = new char[stack.size()];
int i=result.length-1;
while (i>=0){
result[i--] = stack.pop();
}
return new String(result);
}
}
class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> stackNum = new Stack<>();
Stack<Integer> stackOper = new Stack<>();
for (String token : tokens) {
if(!token.equals("+") && !token.equals("-") &&
!token.equals("*") && !token.equals("/")) {
stackNum.push(Integer.valueOf(token));
}else{
if(token.equals("+")){
stackNum.push(stackNum.pop()+stackNum.pop());
}else if(token.equals("-")) {
stackNum.push(-stackNum.pop()+stackNum.pop());
}else if (token.equals("*")){
stackNum.push(stackNum.pop()*stackNum.pop());
}else{
Integer num1 = stackNum.pop();
Integer num2 = stackNum.pop();
stackNum.push(num2/num1);
}
}
}
return stackNum.pop();
}
}