20. Допустимые Скобки [эффективные скобки]

Описание
дано только включает в себя «(», «)» строка, «{», «}», «[», «]», и определить , является ли строка действительна.

Действительно строка должна соответствовать:

Левый кронштейн должен быть закрыт закрывающей скобкой того же типа.
Левая скобка должна быть закрыта в правильном порядке.
Обратите внимание на пустую строку , можно считать действительной строкой

Примеры
Here Вставка рисунка Описание
идей

  • Используйте стек, каждый из кронштейнов превращаются в стек, когда стек элементов , входящих в скобках и верхней части стека первые пары один [перейти в левой скобки, с последующим сравнением закрывающей скобки], то верхний элемент поп-вверх, в противном случае, скобки в стек.
    ответ
  • питон
python有list有pop()函数,使用list代替stack
class Solution:
    def isValid(self, s: str) -> bool:
            
        stack=[]
        d={'(':')','[':']','{':'}'}
        
        for c in s:#字符串中的字符不能直接通过下标进行修改 
            if len(stack)>0 and c==d.get(stack[-1],'?'):
            #c为),},或],top中的应为左括号 ([)()])不是有效的括号
                stack.pop()
            else:
                stack.append(c)
              
        return len(stack)==0
  • C ++
class Solution {
public:
    bool isValid(string s) {
        stack<char> st;
        unordered_map<char,char> dict={{'(',')'},{'[',']'},{'{','}'}};
        for (char c: s)
        {   
            if (!st.empty() && (dict[st.top()]==c))
                st.pop();
            else
                st.push(c);
        }
        return st.empty();
        
        
    }
};
Опубликовано 78 оригинальные статьи · вона похвала 7 · просмотров 10000 +

рекомендация

отblog.csdn.net/puspos/article/details/103063721
рекомендация