- 题目描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例
输入: “()[]{}”
输出: true
输入: “([)]”
输出: false
输入: “{[]}”
输出: true
思路
统计相应左右括号的数目,不为0则返回false
- c++代码
bool isValid(string s) {
int l=s.length();
if(l%2!=0) return false;
int i,a=0;
string p=s;
for(i=0;i<l;i++)
{
if(s[i]=='('||s[i]=='{'||s[i]=='[')
{
a++;p[a]=s[i];
}
else if(s[i]==(p[a]+1)||s[i]==(p[a]+2)) a--;
else return false;
}
if(a) return false;
return true;
}
时间复杂度 O(n)
题目链接
https://leetcode-cn.com/problems/valid-parentheses