括号验证

题目大意

  给定一个只包含(‘, ‘)’, ‘{‘, ‘}’, ‘[’ 和‘]’的字符串,验证它是不是有效的。括号必须配对,而且要以正确的顺序。html

解题思路

  用一个栈来对输入的括号串进行处理,若是是左括号就入栈,若是是右括号就与栈顶元素看是否组成一对括号,组成就弹出,而且处理下一个输入的括号,若是不匹配就直接返回结果。java

代码实现

import java.util.*;

public class Solution {
    public boolean isValid(String s) {

        Deque<Character> stack = new LinkedList<>();
        int index = 0;
        Character top;
        while (index < s.length()) {
            Character c = s.charAt(index);
            switch (c) {
                case '(':
                case '[':
                case '{':
                    stack.addFirst(c);
                    break;
                case ')':

                    if (stack.isEmpty()) {
                        return false;
                    }

                    top = stack.getFirst();
                    if (top == '(') {
                        stack.removeFirst();
                    } else if (top == '[' || top == '{') {
                        return false;
                    } else {
                        stack.addFirst(c);
                    }
                    break;
                case ']':

                    if (stack.isEmpty()) {
                        return false;
                    }

                    top = stack.getFirst();
                    if (top == '[') {
                        stack.removeFirst();
                    } else if (top == '(' || top == '{') {
                        return false;
                    } else {
                        stack.addFirst(c);
                    }
                    break;
                case '}':

                    if (stack.isEmpty()) {
                        return false;
                    }

                    top = stack.getFirst();
                    if (top == '{') {
                        stack.removeFirst();
                    } else if (top == '[' || top == '(') {
                        return false;
                    } else {
                        stack.addFirst(c);
                    }
                    break;
                default:
                    return false;
            }

            index++;
        }

        return stack.isEmpty();
    }
}

 

java实现的判断括号是否成对的代码,()[]{}均可以

原本想找找现成的,去,都写的好复杂。本身写一个吧。挺有成就感。哈哈spa

package com.test.jiexi;.net

 

import java.util.Stack;code

 

public class Check {htm

 

    /**blog

     * @param argsci

     */rem

    public static void main(String[] args) {字符串

        // TODO Auto-generated method stub

        String  s="(1){CHI[与|和] || CAT[J] LOGIC[G|D]}+(2){CAT[A] || OF_AMBI[A]}+(3){CHI[的]||CAT[N]}";

        Stack<Character> sc=new Stack<Character>();

        char[] c=s.toCharArray();

        for (int i = 0; i < c.length; i++) {

            if (c[i]=='('||c[i]=='['||c[i]=='{') {

                sc.push(c[i]);

            }

            else if (c[i]==')') {

                if (sc.peek()=='(') {

                    sc.pop();

                }

            }else if (c[i]==']') {

                if (sc.peek()=='[') {

                    sc.pop();

                }

            }else if (c[i]=='}') {

                if (sc.peek()=='{') {

                    sc.pop();

                }

            }

        }

        if (sc.empty()) {

            System.out.println("成对");

        }else {

            System.out.println("不成对");

        }

    }

}

相关文章
相关标签/搜索