TheAlgorithms / TheAlgorithms/Java

[FEATURE REQUEST] <title>Add Postfix Expression Evaluation implementation with JUnit tests

Ouverte
#7,588 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

enhancement
Langage dominant
Java
Étoiles
66.3k
Forks
21.3k
Merge moyen
16 h 57 min
PR mergées (30 j)
23

Description

What would you like to Propose?

Feature Description

I would like to propose adding an implementation of Postfix (Reverse Polish Notation) Expression Evaluation in Java using a Stack.

The repository currently has InfixToPostfix.java and InfixToPrefix.java, which convert expressions into postfix/prefix notation, but there is no implementation that actually evaluates a postfix expression to compute its result. This would be a natural and useful complement to the existing conversion utilities.

Proposed Changes

I would like to add:

PostfixEvaluation.java under src/main/java/com/thealgorithms/stacks/
Complete implementation with clear Javadoc explanations (O(N) Time, O(N) Space).
Support for standard operators (+, -, *, /) and multi-digit operands.
Proper handling of invalid expressions / division by zero.
PostfixEvaluationTest.java under src/test/java/com/thealgorithms/stacks/
Comprehensive JUnit 5 test suite covering standard expressions, negative results, single-operand expressions, and invalid input handling.

Verification

I will ensure all code follows the project's formatting rules and passes ./gradlew test / mvn test locally before opening a PR.

I would love to implement this as my first open-source contribution! Could a maintainer please assign this issue to me?

Issue details

Issue Details & Algorithm Overview

  1. Algorithm Description

Algorithm: Postfix (Reverse Polish Notation) Expression Evaluation
Category: Stacks / Expression Evaluation
Language: Java

  1. How the Algorithm Works

Given a valid postfix expression (e.g., "23+" representing 2 + 3), evaluate it to a single numeric result using a stack.

Key Logic:

Scan the expression token by token.
If the token is an operand, push it onto the stack.
If the token is an operator, pop the top two operands, apply the operator, and push the result back onto the stack.
After processing all tokens, the stack contains exactly one value — the final result.

  1. Complexity Analysis

Time Complexity: O(N) — single pass through the expression.
Space Complexity: O(N) — stack storage in the worst case (all operands).

  1. Planned Files & Folder Structure

src/main/java/com/thealgorithms/stacks/PostfixEvaluation.java (Implementation)
src/test/java/com/thealgorithms/stacks/PostfixEvaluationTest.java (JUnit 5 Test Suite)

Additional Information

No response

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par lire src/main/java/com/thealgorithms/stacks/InfixToPostfix.java et InfixToPrefix.java afin de respecter les conventions du package et du projet. Ajoutez le fichier nommé PostfixEvaluation.java et son équivalent JUnit 5, en couvrant les opérateurs standard, les opérandes à plusieurs chiffres, les résultats négatifs, les opérandes uniques, les expressions invalides et la division par zéro. Exécutez ./gradlew test ou mvn test ; le travail est terminé lorsque les nouveaux tests réussissent et que les règles de formatage sont respectées.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
backend
Type d'issue
Fonctionnalité
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Clairement spécifiée
Accessibilité débutants
78/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.