Valid Parentheses in Java

The challenge

Write a function that takes a string of parentheses, and determines if the order of the parentheses is valid. The function should return true if the string is valid, and false if it’s invalid.

Examples

"()" => true ")(()))" => false "(" => false "(())((()())())" => true
Code language: PHP (php)

Constraints

0 <= input.length <= 100

Along with opening (() and closing ()) parenthesis, input may contain any valid ASCII characters. Furthermore, the input string may be empty and/or not contain any parentheses at all. Do not treat other forms of brackets as parentheses (e.g. []{}<>).

The solution in Java code

Option 1:

public class Solution { public static boolean validParentheses(String parens) { while (parens.contains("(") && parens.contains(")")) { parens = parens.replaceAll("\\([^()]*\\)", ""); if (!parens.matches(".*\\(+.*\\)+.*")) break; } return !parens.contains("(") && !parens.contains(")"); } }
Code language: Java (java)

Option 2:

public class Solution { public static boolean validParentheses(String parens) { int stack = 0; for(var c : parens.toCharArray()) { if (c == '(') ++stack; else if (c == ')') { if (stack == 0) return false; else --stack; } } return stack == 0; } }
Code language: Java (java)

Option 3:

public class Solution { public static boolean validParentheses(String parens) { int count = 0; for (int i=0; i<parens.length(); i++) { if (parens.charAt(i)=='(') count ++; else if (parens.charAt(i)==')') count--; if (count<0) return false; } return count==0; } }
Code language: Java (java)

Test cases to validate our solution

import org.junit.Test; import static org.junit.Assert.assertEquals; import org.junit.runners.JUnit4; public class SolutionTest { @Test public void sampleTest() { // assertEquals("expected", "actual"); assertEquals(true,Solution.validParentheses( "()" )); assertEquals(false,Solution.validParentheses( "())" )); assertEquals(true,Solution.validParentheses( "32423(sgsdg)" )); assertEquals(false,Solution.validParentheses( "(dsgdsg))2432" )); assertEquals(true,Solution.validParentheses( "adasdasfa" )); } }
Code language: Java (java)
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments