21xrx.com
2025-03-29 11:02:17 Saturday
文章检索 我的文章 写文章
C++代码:括号匹配
2023-07-04 19:17:45 深夜i     18     0
C++ 代码 括号匹配 算法

括号匹配是计算机科学中的一个经典问题,其主要目的是检查一个字符串中的每个括号是否都是成对出现的。在C++中,可以使用栈数据结构来实现这一功能。

首先,我们需要定义一个栈,以存储括号。在C++中,可以使用STL的stack模板来实现栈。接着,我们需要遍历字符串中的每个字符。如果遇到一个左括号,就将其压入栈中。如果遇到一个右括号,就将栈顶元素出栈并与当前右括号进行匹配。如果匹配成功,则继续遍历字符串;否则,说明该字符串不符合括号匹配规则,算法结束。

下面是一段简单的C++代码来实现括号匹配:

#include <iostream>
#include <stack>
using namespace std;
bool checkParentheses(string str) {
  stack<char> s;
  for (char c : str) {
    if (c == '(' || c == '[' || c == '{') {
      s.push(c);
    } else if (c == ')' || c == ']' || c == '}') {
      if (s.empty())
        return false;
      
      char top = s.top();
      s.pop();
      if ((c == ')' && top != '(') ||
        (c == ']' && top != '[') ||
        (c == '}' && top != '{'))
        return false;
      
    }
  }
  return s.empty();
}
int main() {
  string str = "{[(2+3)*5-4]/3}";
  if (checkParentheses(str))
    cout << "该字符串符合括号匹配规则" << endl;
   else
    cout << "该字符串不符合括号匹配规则" << endl;
  
  return 0;
}

在这个实现中,我们使用了一个循环遍历字符串中的每个字符。对于每个遇到的左括号,我们将其压入栈中。对于每个遇到的右括号,我们先检查栈是否为空。如果是,说明该字符串不符合括号匹配规则;否则,就将栈顶元素出栈,并与当前右括号进行匹配。如果匹配成功,就继续遍历字符串;否则,说明该字符串不符合括号匹配规则,算法结束。最后,我们通过判断栈是否为空来确定该字符串是否符合括号匹配规则。

总之,括号匹配是一个常见的计算机科学问题,C++中可以使用栈数据结构来实现。通过使用栈,我们可以很容易地检查一个字符串中的每个括号是否都是成对出现的。

  
  

评论区

请求出错了