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

题目

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true
示例 2:

输入: "()[]{}"
输出: true
示例 3:

输入: "(]"
输出: false
示例 4:

输入: "([)]"
输出: false
示例 5:

输入: "{[]}"
输出: true

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

使用(先进后出)来解:

  • 当匹配"( , [ , {“时,往栈内push对应的”) , ] , }";
  • 当匹配到") , ] , }"时,跟栈pop出来的数据对比是否一致

代码

class Solution {
        public boolean isValid(String s) {
       Stack<Character> stack = new Stack<Character>();
       for(char c:s.toCharArray()){
           if(c=='('){
               stack.push(')');
           }else if(c== '{'){
               stack.push('}');
           }else if(c=='['){
               stack.push(']');
           }else if(stack.isEmpty() || c!=stack.pop()){
               return false;
           }
       }
       return stack.isEmpty();
    }
}

版权声明:本文为tt75281920原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。