20. 有效的括号
链接:LeetCode 20
class Solution {
public boolean isValid(String s) {
Deque<Character> deque = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(') {
deque.push(')');
} else if (c == '{') {
deque.push('}');
} else if (c == '[') {
deque.push(']');
} else if (!deque.isEmpty() && c == deque.peek()) {
deque.pop();
} else if (deque.isEmpty() || c != deque.peek()) {
return false;
}
}
return deque.isEmpty();
}
}
1047. 删除字符串中的所有相邻重复项
class Solution {
public String removeDuplicates(String s) {
LinkedList<Character> str = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
Character c = s.charAt(i);
if(c == str.peek()) {
str.pop();
} else {
str.push(c);
}
}
String res = "";
while (!str.isEmpty()) {
res = str.pop() + res;
}
return res;
}
}
150. 逆波兰表达式求值
链接:LeetCode 150
class Solution {
public int evalRPN(String[] tokens) {
LinkedList<Integer> strings = new LinkedList<>();
for (String token : tokens) {
if (token.equals("+")) {
strings.push(strings.pop() + strings.pop());
}
else if (token.equals("-")) {
strings.push(-strings.pop() + strings.pop());
}
else if (token.equals("*")) {
strings.push(strings.pop() * strings.pop());
}
else if (token.equals("/")) {
Integer pop = strings.pop();
Integer pop1 = strings.pop();
strings.push(pop1 / pop);
} else {
strings.push(Integer.valueOf(token));
}
}
return strings.pop();
}
}