1. 程式人生 > >判斷字串中的括號是否匹配

判斷字串中的括號是否匹配

思路:括號匹配可以用棧來解決,當輸入的是左括號時,將其壓入棧中,輸入的是右括號時,判斷棧是否為空,為空則匹配失敗,否則取棧頂元素判斷其是否與當前右括號匹

配。這樣直到字串輸入結束時,若棧為空則匹配成功,否則匹配失敗。

import java.util.Scanner;
import java.util.Stack;

public class Main {
	public static void main(String[] args){
		Scanner scanner=new Scanner(System.in);
		String s=scanner.nextLine();
		Stack<Character> stack=new Stack<Character>();
		char c;
		char temp;
		for(int i=0;i<s.length();i++){
			c=s.charAt(i);
			if(c=='('||c=='['||c=='{'){
				stack.add(c);
			}else if(c==')'||c==']'||c=='}'){
				if(stack.isEmpty()){
					System.out.println("false");
					System.exit(0);
				}
				temp=stack.peek();
				switch(c){
				   case ')':
					   if(temp=='('){
						   stack.pop();
						   break;
					   }else{
						   System.out.println("false");
						   System.exit(0);
					   }
				   case ']':
					   if(temp=='['){
						   stack.pop();
						   break;
					   }else{
						   System.out.println("false");
						   System.exit(0);
					   }
				   case '}':
					   if(temp=='{'){
						   stack.pop();
						   break;
					   }else{
						   System.out.println("false");
						   System.exit(0);
					   }
				}
			}
		}
		if(stack.isEmpty()){
			System.out.println("true");
		}else{
			System.out.println("false");
		}
	}
}