题目描述
给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
解法
括号匹配是一道很经典的题,可利用stack。
class Solution {
public:
/**
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
// write code here
stack<char> s1;
int i;
for(i = 0; i < s.length(); i++)
{
if(s[i] == '(' || s[i] == '{' || s[i] == '[')
{
s1.push(s[i]);
continue;
}
if(s[i] == ')' && s1.size() > 0 && s1.top() == '(' ||
s[i] == '}' && s1.size() > 0 && s1.top() == '{' ||
s[i] == ']' && s1.size() > 0 && s1.top() == '[')
{
s1.pop();
}
else return false;
}
return s1.empty();
}
};
时间复杂度O(n)
空间复杂度O(n)