21xrx.com
2024-12-22 22:06:31 Sunday
登录
文章检索 我的文章 写文章
C++实现括号匹配并输出对数
2023-07-03 11:35:56 深夜i     --     --
C++ 实现 括号匹配 输出 对数

C++是一种高级编程语言,在算法实现中被广泛使用。括号匹配是一个常见的问题,涉及到在给定的字符串中找到匹配的括号对。在本文中,我们将探讨如何使用C++来实现括号匹配,并输出匹配的对数。

首先,我们需要了解括号匹配的概念。在一个给定的字符串中,如果括号按照正确的顺序和数量出现,则被认为是匹配的。例如,下面的字符串就是匹配的括号序列:


(())()

而下面的字符串则不是匹配的:


())(

为了实现括号匹配,我们可以使用栈的数据结构。当我们遇到左括号时,将其压入栈中,当遇到右括号时,从栈中弹出一个左括号并比较它们是否匹配。如果它们匹配,则将括号对的数量加一,如果不匹配,则代表这个字符串不是匹配的括号序列。

下面是一个实现括号匹配算法的C++代码:


#include <iostream>

#include <stack>

#include <string>

using namespace std;

int matchingPairs(string s) {

  stack<char> st;

  int count = 0;

  for (char c : s) {

    if (c == '(') {

      st.push(c);

    }

    else if (c == ')' && !st.empty() && st.top() == '(') {

      st.pop();

      count++;

    }

  }

  return count;

}

int main() {

  string s;

  cin >> s;

  cout << matchingPairs(s) << endl;

  return 0;

}

在上面的代码中,我们首先定义了一个名为matchingPairs的函数,该函数的参数是一个字符串s。在函数中,我们定义了一个名为st的栈来存储左括号,并定义了一个整数count来存储匹配的括号对数。

在for循环中,我们依次遍历字符串s中的每个字符。如果字符是左括号,则将其压入栈中。如果字符是右括号,并且栈不为空且栈顶的元素是左括号,则弹出栈顶元素,并将括号对数目加一。最后,我们返回count,即匹配的括号对数目。

在主函数中,我们首先定义了一个字符串变量s,并使用cin从控制台读取字符串。然后,我们调用matchingPairs函数,传入字符串变量s,并将其返回值打印到控制台上。

在实际使用中,我们可以将上述代码嵌入到其他C++程序中,并将需要匹配的字符串作为输入传递给matchingPairs函数。通过这种方式,我们可以轻松地找到并输出字符串中匹配的括号对数目,为我们在算法实现过程中提供了充分的便利。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复