2013년 8월 4일 일요일

java Brackets Balance Method

자바 스택을 이용한 괄호 체크 하는 메소드 입니다. 

public static boolean bracketsBalance (String exp) {
    ArrayStack stk = new ArrayStack(exp.length() +1);
    for (int i = 0; i < exp.length(); i++) {
         char ch = exp.charAt(i);
         //시작괄호 이면 스택에 넣음
         if (  ch== '[' || ch == '('  )  {
            stk.push( new Character(ch));
         }        
         else if(ch == ']' || ch == ')')  { 
 //파싱중 우측괄호를 봤는데, 스택이 비어있다면 오류
 if (stk.isEmpty())   return false;          
               //우선 스택에서 하나를 꺼낸다.                       
               char charFromStack = ((Character)stk.pop()).charValue();
    // 파싱한것이 ‘(‘ 인데 스택에서 꺼낸것이 ‘)’ 아니거나,
               //  파싱한것이 ‘[’ 인데 스택에서 꺼낸것이 ‘]’ 아닌경우
     if (  ch == ']' && charFromStack != '['
    ||  (ch == ')' && charFromStack != '(')  )
    return false;
 } // end if
    } // end for loop
    return stk.isEmpty();  //empty means matched,  else unmatched
}
 

댓글 없음:

댓글 쓰기