Previous Next
0 / 4
Module DS-04DSJAVA

Postfix Calculator

DSJAVA β€’ Data Structures and Algorithms in Java

Browser-only practice

Problem Statement

Application lab in Stacks and Expression Processing

Mission

Evaluate an integer postfix token stream.

Learning outcome: Apply a stack to postfix evaluation

Correctness contract

Invariant: Only the top element is removed, and size equals pushes minus successful pops.

Required technique: Use an operand stack and preserve left/right operand order for non-commutative operators.

Complexity target: time O(n); space O(n).

Input and output

Input: A token count n followed by exactly n integer or +, -, *, / tokens. Whitespace may be spaces or line breaks.

Output: Print the single exact numeric result with no label. Return it as a String; Main.java prints it without adding other text.

Assumptions:

  • The token stream is a valid integer postfix expression with nonzero divisors.

Before you code

  1. Restate the input and output contract, then predict the visible example without running code.
  2. Implement the core state transition: Use an operand stack and preserve left/right operand order for non-commutative operators.
  3. Trace the smallest boundary case, verify exact formatting, and justify the authored time and auxiliary-space bounds.

Implement Practice.solve(Scanner sc). Keep every provided filename and public class name unchanged.

Sample input

5 2 3 + 4 *

Sample output

20

Why the sample works: Visible walkthrough for the ordinary non-trivial path. Operands are pushed until an operator combines the two most recent values in left/right order. Input `5 2 3 + 4 *` therefore produces `20`.

Progressive hints

Try the trace and first milestone before opening a hint. Open them in order.

Open hint 1

Hint 1 β€” Contract: identify what each parsed variable represents and write the invariant beside the loop or recursive method.

Open hint 2

Hint 2 β€” Next step: For subtraction or division, compute secondPopped operator firstPopped.

Open hint 3

Hint 3 β€” Verification: compare the structure state before and after one operation, then test the smallest valid input and a duplicate or unreachable case when allowed.

Constraints

Input contract: A token count n followed by exactly n integer or +, -, *, / tokens.

  • The token stream is a valid integer postfix expression with nonzero divisors.

Required technique: Use an operand stack and preserve left/right operand order for non-commutative operators.

Output contract: Print the single exact numeric result with no label.

Use Java 8-compatible code only. Keep the public class names and Practice.solve(Scanner sc) signature from the starter files.

Input Format

A token count n followed by exactly n integer or +, -, *, / tokens.

Output Format

Print the single exact numeric result with no label.

Sample Testcases

Submit runs every public testcase in this browser. Results and code never leave this device.

Sample #1
Public sample
5 2 3 + 4 *
20
Visible walkthrough for the ordinary non-trivial path. Operands are pushed until an operator combines the two most recent values in left/right order. Input `5 2 3 + 4 *` therefore produces `20`.

Web terminal

C, C++, Java, and Python run locally in a browser VM. No worker or visualizer is used.

Saved in this browser
Editor settings