这道题是一道简单的符号匹配问题。可以用栈来解决。‘(’和‘)’匹配,‘[’和’]’匹配,‘{’和‘}’匹配,遍历输入的字符串,依次压入栈中,若待压入的字符和栈顶字符相匹配,则说明这是一对匹配的字符,则弹出栈顶字符,继续遍历。截至条件就是遍历结束后,若栈中没有字符则说明全部匹配正确,否则说明字符串匹配错误返回false。
实现代码如下:
class Solution {
public:
bool isValid(string s) {
stack<char> ss;
if (s.size() == 0)return true;
ss.push(s[0]);
for (int i = 1; i < s.size(); i++)
{
if (ss.size() == 0)ss.push(s[i]);
else if ((s[i] == ')' &&ss.top() == '(') || (s[i] == '}' &&ss.top() == '{') || (s[i] == ']' &&ss.top() == '['))
ss.pop();
else
ss.push(s[i]);
}
if (ss.size() == 0)return true;
else return false;
}
};