From 79ceb6aac84ab374130dd0e51e654c443ad15c54 Mon Sep 17 00:00:00 2001 From: Raafat Akkad Date: Mon, 6 Mar 2023 20:19:48 +0000 Subject: [PATCH] Optimize isValid implementation * Set the HashMap initial capacity * Strings and Boxed types should be compared using "equals()". * Use String#charAt instead of String#toCharArray to avoid using O(n) space * Simplify return statement --- java/0020-valid-parentheses.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/java/0020-valid-parentheses.java b/java/0020-valid-parentheses.java index 5d54eb195..d41194111 100644 --- a/java/0020-valid-parentheses.java +++ b/java/0020-valid-parentheses.java @@ -28,15 +28,16 @@ public boolean isValid(String s) { class Solution { public boolean isValid(String s) { Stack brackets = new Stack<>(); - Map bracketLookup = new HashMap<>(); + Map bracketLookup = new HashMap<>(3); bracketLookup.put(')', '('); bracketLookup.put('}', '{'); bracketLookup.put(']', '['); - for (char c : s.toCharArray()) { + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); if (bracketLookup.containsKey(c)) { - if (brackets.size() != 0 && brackets.peek() == bracketLookup.get(c)) { + if (!brackets.isEmpty() && bracketLookup.get(c).equals(brackets.peek())) { brackets.pop(); } else { return false; @@ -46,7 +47,6 @@ public boolean isValid(String s) { } } - if (brackets.size() == 0) return true; - return false; + return brackets.isEmpty(); } }