第4关:栈在括号匹配中的应用
时间: 2023-08-11 07:08:31 浏览: 250
括号匹配问题是栈的一个典型应用。具体实现如下:
1. 遍历字符串中的每一个字符。
2. 如果当前字符是左括号(即 (、{、[),则将其压入栈中。
3. 如果当前字符是右括号(即 )、}、]),则弹出栈顶元素并判断是否与当前字符匹配。如果不匹配,则表明括号不匹配,返回 false。
4. 遍历完字符串后,如果栈非空,则表明括号不匹配,返回 false;否则返回 true。
如果需要检查多种括号的匹配,可以使用一个 map 来存储左括号和右括号之间的对应关系。例如,可以定义一个如下的 map:
```c++
std::map<char, char> parentheses_map = {
{'(', ')'},
{'{', '}'},
{'[', ']'}
};
```
然后在第 2 步中,将左括号压入栈中时,同时记录对应的右括号。在第 3 步中,弹出栈顶元素后,判断其与当前字符是否匹配时,可以通过 map 来获取对应的右括号。
阅读全文