括号匹配问题:
顺序扫描字符串,当前字符为(,{,[时,入栈;当为),},]时,检查是否为栈顶元素的匹配字符;若匹配,栈顶元素出栈,否则返回false;
class Solution {
public:
bool isValid(string s) {
stack<char> table;
unordered_map<char,char> map;
map['}']='{';
map[')']='(';
map[']']='['; //构造匹配对
for(int i=0;i<s.size();i++)
{
if(s[i]=='{'||s[i]=='('||s[i]=='[')
table.push(s[i]);
else
{
if(table.size()>0&&table.top()==map[s[i]])
table.pop();
else
return 0;
}
}
if(table.size()==0)
return 1;
else
return 0;
}
};
括号匹配问题解析
本文介绍了一种使用栈和哈希表实现括号匹配的有效算法。通过遍历输入字符串,遇到左括号时将其压入栈中,遇到右括号时检查是否与栈顶元素匹配。若匹配则弹出栈顶元素,否则返回错误。最终栈为空表示所有括号正确匹配。
306

被折叠的 条评论
为什么被折叠?



