스 택 을 사용 하여 괄호 가 일치 하 는 문 제 를 해결 합 니 다.

4787 단어 자바stack
봉 인 된 종류:
1->public Stack()빈 스 택 만 들 기
 
2->Public boolean empty()스 택 이 비어 있 는 지 테스트 합 니 다.
 
3->Public E pop()은 스 택 상단 의 대상 을 제거 하고 이 함수 의 값 으로 대상 을 되 돌려 줍 니 다. 
 
4->public E push(E item)스 택 상단 에 항목 을 누 르 기
 
5->Public E peek()는 스 택 상단 의 대상 을 보지 만 스 택 에서 제거 하지 않 습 니 다. 
 
6-->Public boolean empty()스 택 이 비어 있 는 지 테스트 합 니 다.
 
질문
묘사 하 다.
현재 괄호 서열 이 있 습 니 다.이 괄호 가 맞 는 지 확인 하 십시오.
입력
첫 번 째 줄 에 N(0출력
각 그룹의 입력 데이터 의 출력 이 한 줄 을 차지 합 니 다.이 문자열 에 포 함 된 괄호 가 짝 을 이 루 면 Yes 를 출력 하고,짝 을 이 루 지 않 으 면 No 를 출력 합 니 다.
코드:
package com.accp; import java.util.ArrayList; import java.util.List; /**  * 스 택(Stack,선진 후 출력(FILO)의 데이터 구조) * @author Administrator  *  * @param스 택 에 저 장 된 데이터 형식의 일반적인 매개 변수 */ public class MyStack { private List list = new ArrayList(); /** * 스 택 에 들 어가 기*/public void push(T element){list.add(element);}/***출고*@return*/public T pop(){return list.remove(list.size()-1);}/***스 택 이 비어 있 는 지 판단*@return true-비어 있 는 지,false-비어 있 지 않 음*/public boolean isEmpty(){return list.size()=0;}/****스 택 크기*@return 스 택 크기*/public int size(){return list.size();}가 져 오기
 package com.accp; 
  
public class Test01 {


public static void main(String[] args) {
System.out.println(checkBrace("[(2+3) * 5] + 9"));
System.out.println(checkBrace("{2 + ( 3 * 5} – 6)"));
System.out.println(checkBrace("(2+3)) * 5"));
}

/**
*
* @return true- , false-
*/
public static boolean checkBrace(String str) {
MyStack<Character> stack = new MyStack<Character>();

for(int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(ch == '(' || ch == '[' || ch == '{') {
stack.push(ch); // -
}
else if(ch == ')' || ch == '}' || ch == ']') {
// -
if(! stack.isEmpty()) { //
char temp = stack.pop();
if(!(ch == ')' && temp == '(') &&
!(ch == ']' && temp == '[') &&
!(ch == '}' && temp == '{')) {
return false; //
}
}
else { //
return false;
}
}
}

//
return stack.isEmpty();
}
}

좋은 웹페이지 즐겨찾기