Valid Parentheses

kata programming

مساله:

یک تابع بنویسید که یک رشته حاوی پرانتز را برگیرد و تعیین می کند که ترتیب پرانتز معتبر است یا خیر. اگر رشته معتبر باشد، تابع باید true و اگر نامعتبر است ، false برگرداند.

مثال ها:

"()"              =>  true
")(()))"          =>  false
"("               =>  false
"(())((()())())"  =>  true

محدودیت ها :

0 <= input.length <= 100

همراه با پرانتز باز ( و بسته ) ، ورودی ممکن است شامل هر کاراکتر معتبر ASCII باشد. علاوه بر این، رشته ورودی ممکن است خالی باشد و/یا هیچ پرانتزی نداشته باشد. با سایر پرانتزها(مانند [] ، {} ، <>) به عنوان پرانتز برخورد نکنید.


Description:

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

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. [], {}, <>).


import java.util.Stack;

public class Solution{
  
  public static boolean validParentheses(String parens)
  {
    Stack<String> stack = new Stack<String>();
    String[] arr = parens.split("");
    for (String ch : arr) {
      if (ch.equals("("))
        stack.push("(");
      else if (ch.equals(")")) {
        if (stack.size() == 0)
          return false;
        stack.pop();
      }
    }
    return stack.size() > 0 ? false : true;
  }
}
public class Solution{
  
  public static boolean validParentheses(String str) {
    
    int count = 0;
    
    for(int i = 0; i < str.length(); i++) {
      
      if(str.charAt(i) == '(') count++;
        else if(str.charAt(i) == ')') count--;
      if(count < 0) return false;
    }
    if(count == 0) return true;
    else return false;
  }
}
import java.util.regex.*;

public class Solution {
  public static boolean validParentheses(String parens) {
    try {
      Pattern.compile(parens.replaceAll("[^()]", ""));
      return true;
    } catch (PatternSyntaxException e) {
      return false;
    }
  }
}
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(")");
    }
}
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;
  }
}
import java.util.*;

public class Solution{
  
   public static boolean validParentheses(String parens)
    {
      ArrayList<String> list = new ArrayList<String>(Arrays.asList(parens.split("")));
     for (int i = 0 ; i < list.size();i++) {
         if (list.get(i).equals(")"))
             return false;
         if (list.get(i).equals("(")) {
             int k = findRightParentheses(list,i);
            if (k != 0) {
                list.remove(i);
                list.remove(k - 1);
                i--;
            }
            else return false;
         }

     }

        return  true;
    }

    public static int findRightParentheses(List<String> list,int number) {
        for (int i = number; i < list.size(); i++ ) {
            if (list.get(i).equals(")"))
                return i;
        }
        return 0;
    }
}
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;
  }
}

دیدگاهتان را بنویسید