diff --git a/src/main/java/com/thealgorithms/backtracking/NQueens.java b/src/main/java/com/thealgorithms/backtracking/NQueens.java index 404f677738a0..403102b84066 100644 --- a/src/main/java/com/thealgorithms/backtracking/NQueens.java +++ b/src/main/java/com/thealgorithms/backtracking/NQueens.java @@ -4,6 +4,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.logging.Logger; /** * Problem statement: Given a N x N chess board. Return all arrangements in @@ -41,6 +42,8 @@ */ public final class NQueens { + private static final Logger LOGGER = Logger.getLogger(NQueens.class.getName()); + // Store occupied rows for constant time safety check private static final Set OCROWS = new HashSet<>(); @@ -63,13 +66,13 @@ public static void placeQueens(final int queens) { List> arrangements = new ArrayList<>(); getSolution(queens, arrangements, new int[queens], 0); if (arrangements.isEmpty()) { - System.out.println(" no way to place " + queens + " queens on board of size " + queens + "x" + queens); + LOGGER.info(" no way to place " + queens + " queens on board of size " + queens + "x" + queens); } else { - System.out.println("Arrangement for placing " + queens + " queens"); + LOGGER.info("Arrangement for placing " + queens + " queens"); } for (List arrangement : arrangements) { - arrangement.forEach(System.out::println); - System.out.println(); + arrangement.forEach(row -> LOGGER.info(row)); + LOGGER.info(""); } } diff --git a/src/main/java/com/thealgorithms/stacks/StackPostfixNotation.java b/src/main/java/com/thealgorithms/stacks/StackPostfixNotation.java index 690f39d36f5c..4a04bb42575e 100644 --- a/src/main/java/com/thealgorithms/stacks/StackPostfixNotation.java +++ b/src/main/java/com/thealgorithms/stacks/StackPostfixNotation.java @@ -1,7 +1,8 @@ package com.thealgorithms.stacks; +import java.util.ArrayDeque; +import java.util.Deque; import java.util.Scanner; -import java.util.Stack; import java.util.function.BiFunction; /** @@ -35,24 +36,23 @@ private static BiFunction getOperator(final String op } } - private static void performOperation(Stack s, final String operationSymbol) { + private static void performOperation(Deque s, final String operationSymbol) { if (s.size() < 2) { throw new IllegalArgumentException("exp is not a proper postfix expression (too few arguments)."); } s.push(getOperator(operationSymbol).apply(s.pop(), s.pop())); } - private static void consumeExpression(Stack s, final String exp) { - Scanner tokens = new Scanner(exp); - - while (tokens.hasNext()) { - if (tokens.hasNextInt()) { - s.push(tokens.nextInt()); - } else { - performOperation(s, tokens.next()); + private static void consumeExpression(Deque s, final String exp) { + try (Scanner tokens = new Scanner(exp)) { + while (tokens.hasNext()) { + if (tokens.hasNextInt()) { + s.push(tokens.nextInt()); + } else { + performOperation(s, tokens.next()); + } } } - tokens.close(); } /** @@ -62,7 +62,7 @@ private static void consumeExpression(Stack s, final String exp) { * @exception IllegalArgumentException exp is not a valid postix expression. */ public static int postfixEvaluate(final String exp) { - Stack s = new Stack<>(); + Deque s = new ArrayDeque<>(); consumeExpression(s, exp); if (s.size() != 1) { throw new IllegalArgumentException("exp is not a proper postfix expression.");