表达式求值
题目:
https://leetcode-cn.com/problems/basic-calculator-ii/
class Solution {
public int calculate(String s) {
LinkedList<Integer> integers = new LinkedList<>();
LinkedList<Character> ops = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == ' ') {
continue;
}
if (!Character.isDigit(c)) {
ops.push(c);
continue;
}
int number = c - '0';
while (i + 1 < s.length() && Character.isDigit(s.charAt(i + 1))) {
i++;
number = number * 10 + s.charAt(i) - '0';
}
if (!ops.isEmpty()) {
char lastOp = ops.peek();
if (lastOp == '*') {
ops.pop();
integers.push(integers.pop() * number);
continue;
} else if (lastOp == '/') {
ops.pop();
integers.push(integers.pop() / number);
continue;
}
}
integers.push(number);
}
int res = integers.removeLast();
while (!ops.isEmpty()) {
char lastOp = ops.removeLast();
if (lastOp == '+') {
res += integers.removeLast();
} else {
res -= integers.removeLast();
}
}
return res;
}
}
发布于 2020/08/23
浏览
次