zoukankan      html  css  js  c++  java
  • 算法题:括号匹配(小中大括号序列)

    括号序列由( )[ ]{ }组成,不合法的括号序列由( { ) },[ } { ],等等。编程实现一个函数,检查一个括号序列是否是合法的括号序列。

    解法:

    思路和“后缀表达式的求解”相似。我们借助栈,每读一个括号,如果是左括号,那么入栈,然后继续读下一个括号;如果是右括号,那么就要看看这个右括号和栈顶的括号是否匹配;如果匹配,那么弹出栈顶的括号,继续读下一个括号。当栈变空时,说明此括号序列是合法的。
     

    public class Test05 {
     
    	public static boolean isValid(String exp) {
    		String left = "([{";
    		String right = ")]}";
    		Stack<Character> s = new Stack<Character>();
    		for (int i = 0, len = exp.length(); i < len; i++) {
    			char ch = exp.charAt(i);
    			if (left.indexOf(ch) != -1) {
    				s.push(ch);
    			}
    			else if (right.indexOf(ch) != -1) {
    				if (!s.isEmpty()) {
    					char temp = s.pop();
    					if (ch != right.charAt(left.indexOf(temp))) {
    						return false;
    					}
    				}
    				else {
    					return false;
    				}
    			}
    		}
    		return s.isEmpty();
    	}
     
    	public static void main(String[] args) {
    		System.out.println(isValid("([()]{})"));
    		System.out.println(isValid("((){}"));
    		System.out.println(isValid("[{)()]"));
    	}
     
    }
     
    

      

  • 相关阅读:
    supervisor 配置
    单链表
    二叉排序树
    python 排序
    64 位 Ubuntu 下 android adb 不可用解决方法
    python 获取文件夹大小
    Ubuntu mongodb 安装和配置
    关于c3p0配置详细说明
    dwr消息推送
    关于如果修改 ie 浏览器 文本模式
  • 原文地址:https://www.cnblogs.com/jobbible/p/9945708.html
Copyright © 2011-2022 走看看