mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 02:53:31 +08:00
优化字符串判断逻辑
This commit is contained in:
@ -133,39 +133,26 @@ public:
|
||||
java:
|
||||
|
||||
```Java
|
||||
public class EvalRPN {
|
||||
|
||||
class Solution {
|
||||
public int evalRPN(String[] tokens) {
|
||||
Deque<Integer> stack = new LinkedList();
|
||||
for (String token : tokens) {
|
||||
char c = token.charAt(0);
|
||||
if (!isOpe(token)) {
|
||||
stack.addFirst(stoi(token));
|
||||
} else if (c == '+') {
|
||||
stack.push(stack.pop() + stack.pop());
|
||||
} else if (c == '-') {
|
||||
stack.push(- stack.pop() + stack.pop());
|
||||
} else if (c == '*') {
|
||||
stack.push( stack.pop() * stack.pop());
|
||||
for (int i = 0; i < tokens.length; ++i) {
|
||||
if ("+".equals(tokens[i])) { // leetcode 内置jdk的问题,不能使用==判断字符串是否相等
|
||||
stack.push(stack.pop() + stack.pop()); // 注意 - 和/ 需要特殊处理
|
||||
} else if ("-".equals(tokens[i])) {
|
||||
stack.push(-stack.pop() + stack.pop());
|
||||
} else if ("*".equals(tokens[i])) {
|
||||
stack.push(stack.pop() * stack.pop());
|
||||
} else if ("/".equals(tokens[i])) {
|
||||
int temp1 = stack.pop();
|
||||
int temp2 = stack.pop();
|
||||
stack.push(temp2 / temp1);
|
||||
} else {
|
||||
int num1 = stack.pop();
|
||||
int num2 = stack.pop();
|
||||
stack.push( num2/num1);
|
||||
stack.push(Integer.valueOf(tokens[i]));
|
||||
}
|
||||
}
|
||||
return stack.pop();
|
||||
}
|
||||
private boolean isOpe(String s) {
|
||||
return s.length() == 1 && s.charAt(0) <'0' || s.charAt(0) >'9';
|
||||
}
|
||||
private int stoi(String s) {
|
||||
return Integer.valueOf(s);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new EvalRPN().evalRPN(new String[] {"10","6","9","3","+","-11","*","/","*","17","+","5","+"});
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user