LeetCode-Valid Parentheses

Given a string containing just the characters ‘(‘, ‘)‘, ‘{‘, ‘}‘, ‘[‘ and ‘]‘, determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

 这一题是典型的使用压栈的方式解决的问题,题目中还有一种valid情况没有说明,需要我们自己考虑的,就是"({[]})"这种层层嵌套但

可以完全匹配的,也是valid的一种。解题思路是这样的:我们对字符串S中的每一个字符C,如果C不是右括号,就压入栈stack中。

如果C是右括号,判断stack是不是空的,空则说明没有左括号,直接返回not valid,非空就取出栈顶的字符pre来对比,如果是匹配

的,就弹出栈顶的字符,继续取S中的下一个字符;如果不匹配,说明不是valid的,直接返回。当我们遍历了一次字符串S后,注意

这里还有一种情况,就是stack中还有残留的字符没有得到匹配,即此时stack不是空的,这时说明S不是valid的,因为只要valid,一

定全都可以得到匹配使左括号弹出。

public class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack=new Stack<Character>();
        for (int i=0 ; i<s.length(); i++){
            char c=s.charAt(i);
            if(c == ‘(‘ || c == ‘[‘ || c == ‘{‘){
                stack.push(c);
            }
            else if(c == ‘)‘ || c == ‘]‘ || c == ‘}‘){
                if(stack.empty()){
                    return false;
                }
                else{
                    if ((c == ‘)‘ && stack.peek() == ‘(‘) || (c == ‘]‘ && stack.peek() == ‘[‘) || (c == ‘}‘ && stack.peek() == ‘{‘)){
                        stack.pop();
                    }
                    else{
                        return false;
                    }
                }
            }
        }
        if(!stack.empty()){
            return false;
        }
        else{
            return true;
        }
    }
}
时间: 2024-10-13 02:22:36

LeetCode-Valid Parentheses的相关文章

LeetCode: Valid Parentheses [020]

[题目] Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]

LeetCode——Valid Parentheses

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]"

Leetcode: Valid Parentheses 有效的括号匹配

Valid Parentheses: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]"

LeetCode: Valid Parentheses 解题报告

Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" a

[Leetcode] valid parentheses 有效括号对

Given a string containing just the characters'(',')','{','}','['and']', determine if the input string is valid. The brackets must close in the correct order,"()"and"()[]{}"are all valid but"(]"and"([)]"are not. 题意:给

[LeetCode] Valid Parentheses 验证括号

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]"

LeetCode Valid Parentheses Remove Nth Node From End of List

public ListNode removeNthFromEnd(ListNode head, int n) { if(head==null) return null; if(n==0)//如果n==0 return head; Map<Integer,ListNode> map=new HashMap<Integer, ListNode>(); int i=0; ListNode temp=head; do { map.put(++i, temp); temp=temp.next

leetcode Valid Parentheses python

# 解题思路: # 创建一个字典映射关系 dicts# 使用一个栈stk 遍历字符串s 得到一个新的字符串curItem 如果lastItem在dicts中的value和它相等 不做任何操作# 如果不等 入栈 有lastItem的 先append lastItem 然后是curItem ## 最后判断如果stk为空说明所给字符串匹配 return true class Solution(object): def isValid(self, s): """ :type s: s

LeetCode Valid Parentheses 有效括号

1 class Solution { 2 public: 3 void push(char c){ //插入结点 4 struct node *n=new struct node; 5 n->nex=0; 6 n->ch=c; 7 n->pre=last; 8 last->nex=n; 9 last=last->nex; 10 } 11 bool jud(char c){ //判断 12 struct node *m; 13 if(c==']') 14 c='['; 15 e

leetcode valid parentheses(easy) /java

题目如图 首先明确的是,可以有(()) ([])诸如此类的表达的. 然后用栈实现算法是,较为容易的. 判断总长度,不是2的倍数,返回false. 如果第一个是)]},返回false. 如果是( [  {则压入栈中 如果是)则看栈顶是不是(,如果不是,那么返回false.其他,类似. 执行完循环,如果栈为空,返回true.栈不为空,返回false. 用linkedlist实现栈. 构造函数,举例: LinkedList link=new LinkedList(); LinkedList<Strin