您的位置:首页 > 教育 > 培训 > 有效括号序列

有效括号序列

2025/2/24 5:33:27 来源:https://blog.csdn.net/weixin_47151388/article/details/141725277  浏览:    关键词:有效括号序列

这段代码实现了一个用于验证括号匹配的算法,判断给定的字符串中的括号是否配对并且顺序正确。它通过使用栈来模拟括号的入栈和出栈操作,检查所有括号的配对情况。

代码:

class Solution {
public:/*** @param s string字符串 * @return bool布尔型*/bool isValid(string s) {// 定义一个字符栈,用于存储左括号stack<char> st;// 获取字符串 s 的长度int n = s.size();// 遍历字符串 s 的每个字符for(int i = 0; i < n; i++) {// 如果栈不为空,且当前字符 s[i] 是右括号且栈顶元素为对应的左括号if(!st.empty() && ((s[i] == ']' && st.top() == '[') || (s[i] == '}' && st.top() == '{') || (s[i] == ')' && st.top() == '('))) {// 弹出栈顶元素,表示成功配对一对括号st.pop();} else {// 否则将当前字符 s[i] 压入栈中st.push(s[i]);}}// 最后检查栈是否为空,如果为空则说明所有括号都成功配对return st.empty();}
};

代码流程总结

  1. 初始化一个空栈 st
  2. 遍历字符串 s 的每个字符:
    • 如果是左括号 (, {, [,将其压入栈中。
    • 如果是右括号 ), }, ],则检查栈顶元素是否为对应的左括号。如果是,则弹出栈顶元素,表示一对括号成功配对;如果不是,则将当前右括号压入栈。
  3. 遍历结束后,如果栈为空,说明所有括号都成功配对,返回 true;否则返回 false

示例

  • 输入: s = "()"输出: true
  • 输入: s = "([)]"输出: false
  • 输入: s = "{[]}"输出: true

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com