leetcode-有效的括号

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

有效字符串需满足:

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

注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true

示例 2:

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

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

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

 

思路:显而易见用来做。观察可以得到:只把左括号加入栈中,而当遍历的是右括号,则需要判断栈顶元素是否和遍历元素对应,如果对应则将左括号出栈,不对应或者栈为空,则不符合要求。  

代码如下:

class Solution {
    public boolean isValid(String s) {
       Stack<Character> stack=new Stack();
        char[] c=s.toCharArray();
        for(int i=0;i<s.length();i++){
            if(c[i]=='('||c[i]=='{'||c[i]=='[')stack.push(c[i]);
            else if(c[i]==')'){
                 if(!stack.isEmpty()&&stack.peek()=='(')stack.pop();
                else return false;
            }else if(c[i]=='}'){
                 if(!stack.isEmpty()&&stack.peek()=='{')stack.pop();
                else return false;
            }else if(c[i]==']'){
                if(!stack.isEmpty()&&stack.peek()=='[')stack.pop();
                else return false;
            }
        }
       if(!stack.isEmpty())return false; //添加元素都是左括号当然不符合要求
        return true;
    }
}

 

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

有效字符串需满足:

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

注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true

示例 2:

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

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

输入: "{[]}"
输出: true
posted @ 2018-09-10 15:00  吃土豆鸭  阅读(171)  评论(0编辑  收藏  举报