From 763f4bfa00892b4e78d95986a1b87de1b6ac0295 Mon Sep 17 00:00:00 2001 From: Sean Prashad <13009507+SeanPrashad@users.noreply.github.com> Date: Sat, 8 May 2021 19:35:02 -0400 Subject: [PATCH] Update 1249_Minimum_Remove_to_Make_Valid_Parentheses.java --- ...imum_Remove_to_Make_Valid_Parentheses.java | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/Strings/1249_Minimum_Remove_to_Make_Valid_Parentheses.java b/Strings/1249_Minimum_Remove_to_Make_Valid_Parentheses.java index fea3e6f9..f0db18ac 100644 --- a/Strings/1249_Minimum_Remove_to_Make_Valid_Parentheses.java +++ b/Strings/1249_Minimum_Remove_to_Make_Valid_Parentheses.java @@ -1,30 +1,36 @@ class Solution { public String minRemoveToMakeValid(String s) { - if (s == null || s.length() == 0) { return new String(); } - + if (s == null || s.isEmpty()) { + return ""; + } + StringBuilder sb = new StringBuilder(); - Stack st = new Stack<>(); - Set invalidIndices = new HashSet<>(); - + int counter = 0; + for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); - - if (c == '(') { st.push(i); } - else if (c ==')') { - if (st.isEmpty()) { invalidIndices.add(i); } - else { st.pop(); } + + if (c == '(') { + ++counter; + } else if (c == ')') { + if (counter == 0) { + continue; + } + --counter; } - } - - while (!st.isEmpty()) { invalidIndices.add(st.pop()); } - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - - if (invalidIndices.contains(i)) { continue; } sb.append(c); } - + + for (int i = sb.length() - 1; i >= 0; i--) { + char c = sb.charAt(i); + + if (c == '(' && counter > 0) { + --counter; + sb.deleteCharAt(i); + } + } + return sb.toString(); } }