자바 스택

이 문제에서 우리는 입력 문자열이 유효한 괄호 시퀀스인지 여부를 찾아야 합니다!
우리는 문자열을 다음과 같이 넣었습니다.
{}()
({()})
{}(
[]

그리고 우리의 입력에 따르면 이 프로그램은 시퀀스가 ​​유효하면 "true"를, 그렇지 않으면 "false"를 제공합니다.

   import java.util.*;
    class Solution{ 
    public static void 
    main(String []argh)
    {
Scanner sc = new Scanner(System.in);

while(sc.hasNext()) {
         String input=sc.next();
            //Complete the code

        }
      System.out.println(isValid(input));
          }
      }
        public static boolean 
    isValid(String s){
        if(s.charAt(0)==')'||s.charAt(0)=='}'||s.charAt(0)==']'){
            return false;
        }
       Stack<Character> stack=new Stack<>();
     for(int i=0;i<s.length();i++)
    {if(s.charAt(i)=='{'||s.charAt(i)=='('||s.charAt(i)=='[')
        { 
     stack.push(s.charAt(i));
        }
    else{
        if(stack.empty()){
            return false;
        }
    char open=findOpenBracket(s.charAt(i));
        char ch=stack.pop();
     if(ch!=open)   {
        return false;
         }
        }
    }
    if(stack.empty()){
        return true;
    }
    return false;
    }
    public static char findOpenBracket(char c)
    {
       if(c=='}')
          {
          return '{';
          }
       else if(c==')'){
           return '(';
          }
       else if(c==']'){
        return '[';
         }
        return ' ';
         }
        }


의심되는 부분이 있으면 언제든지 댓글로 질문해주세요:)
이 문제는 HackerRank에서 가져왔습니다!!
해피코딩❤️

좋은 웹페이지 즐겨찾기