题目要求
P1449题目链接
给出后缀表达式求值,就相当于没了括号,而且很直接。
我们需要使用栈结构来完成任务。
Java原装的栈使用了很多synchronized,导致性能不佳,但我们也就将就着用一下吧……
注意到@就停止,不到@,每遇到一个数就入栈,每遇到一个符号就出栈两个数并进行对应运算,结果再入栈。
AC代码(Java语言描述)import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack stack = new Stack();
Scanner scanner = new Scanner(System.in);
String sequence = scanner.nextLine();
scanner.close();
int tempNum = 0, x, y;
for (char c : sequence.toCharArray()) {
if (c == '@') {
break;
}
switch (c) {
case '+':
x = stack.pop();
y = stack.pop();
stack.push(y+x);
break;
case '-':
x = stack.pop();
y = stack.pop();
stack.push(y-x);
break;
case '*':
x = stack.pop();
y = stack.pop();
stack.push(y*x);
break;
case '/':
x = stack.pop();
y = stack.pop();
stack.push(y/x);
break;
case '.':
stack.push(tempNum);
tempNum = 0;
break;
default:
tempNum = tempNum*10+c-'0';
break;
}
}
System.out.println(stack.pop());
}
}