栈应用之平衡符号

291 阅读1分钟

栈的应用:检查每件事情是否能成对出现。 算法叙述:做一个空栈。读入字符直到文件结尾。如果字符是一个开放符号,则将其推入栈中。如果字符是一个封闭符号,则当栈为空时报错。否则,将栈元素弹出。如果弹出的符号不是对应的开放符号,则报错在文件结尾,如果栈非空则报错。

public static void checkChar(String str){
	boolean error = false;
	//创建空栈
	Stack s = new Stack();
	for(int i=0;i<str.length();i++){
		char c = str.charAt(i);
		switch(c){
		case '(':
		case '{':
		case '[':
			s.push(c);
			break;
			
		case ')':
		case '}':
		case ']':
			if(s.isEmpty()){
				System.out.println("Error,"+ c +" is no match.");
			}else{
				char cc = (char) s.pop();
				if((c==')'&&cc!='(')||(c=='}'&&cc!='{')||(c==']'&&cc!='[')){
					System.out.println("Error,"+ cc +" mismatch "+ c);
				}		
			}
			break;
			
		default:
			break;
		}
	}
	if(!s.isEmpty()){
		System.out.println("Error,sign is remaining.");
	}else{
		System.out.println("match success!");
	}
}

public static void main(String[] args) {
	String str = "Java(/* */,(),[],{})";
	checkChar(str);
}

}