给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串 s ,判断字符串是否有效。 简单算法 算法基础 算法面试题 算法 java算法 java算法面试题 java结算法

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

根据题目要求,就是要有对应的右括号,‘{[]}’这种也是符合要求的,‘()【】{}’这是符合要求的。也就是说左括号要有相邻的右括号对应就可以。

public static boolean isValid(String s) {
        //这里定义了一个栈,栈是矢量的一个子类,它实现了一个标准的先进后出的栈
        Stack<Character> stack = new Stack<Character>();
        //将字符串转成char数组,循环遍历
        for(char c: s.toCharArray()){
            //将数组取出的值与对应的括号比较,如果右括号存在把对应左括号放入栈中,
            // 如果出现的是左括号,栈中不会存在值,直接返回
            //stack.push 把值放入到栈的最顶部
            if(c=='('){
                stack.push(')');
            }else if(c=='['){
                stack.push(']');
            }else if(c=='{'){
                stack.push('}');
            }else if(stack.isEmpty()||c!=stack.pop()){
                //stack.pop()取栈中最顶部的值
                return false;
            }
        }
        return stack.isEmpty();
    }

猜你喜欢

转载自blog.csdn.net/yu1xue1fei/article/details/113766754