레이블이 JAVA STACK인 게시물을 표시합니다. 모든 게시물 표시
레이블이 JAVA STACK인 게시물을 표시합니다. 모든 게시물 표시

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
}