当前位置: 代码迷 >> 综合 >> Leetcode每日一题(20200814)
  详细解决方案

Leetcode每日一题(20200814)

热度:32   发布时间:2024-02-10 22:18:55.0

今日题目

T20 有效的括号(简单,栈)

题目描述

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

有效字符串需满足:

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

示例 1:
输入: “()”
输出: true

示例 2:
输入: “()[]{}”
输出: true

标签

解析

直接利用栈进行匹配即可。

python解法

class Solution:def isValid(self, s: str) -> bool:if not s:return Truesize = -1stack = list()for i in s:if i in ['(', '[', '{']:size += 1stack.append(i)else:if size < 0:return Falseif i == ')':if stack[size] == '(':stack.pop()size -= 1else:return Falseif i == ']':if stack[size] == '[':stack.pop()size -= 1else:return Falseif i == '}':if stack[size] == '{':stack.pop()size -= 1else:return Falsereturn len(stack) == 0

C++解法

class Solution
{
public:bool isValid(string s){int len = s.size();stack<char> s1;for (char c : s){if (c == '(' || c == '[' || c == '{'){s1.push(c);}else{if (s1.empty()){return false;}char c1;switch (c){case ')':c1 = '[';break;case ']':c1 = '[';break;case '}':c1 = '{';break;default:c1 = '\0';break;}if (c1 != s1.top()){return false;}s1.pop();}}return s1.empty();}
};