写过括号匹配这种题就很容易想到用栈来解决此类问题
首先要理解栈是什么,它是一种线性表

你可以将它理解为一个容器 但他只能从栈顶出,栈顶入,后进先出
实际定义(来自百度百科):栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
头文件:#include<stack>
定义:stack<类型(例如int)>a
删除栈顶元素:a.pop()
入栈:a.push(元素)
返回栈顶元素:a.top()
元素数量:a.size()
判断栈是否为空:a.empty() 是的话,返回一
两个大的气泡会消失,直接就a.pop()
但要注意栈为空就无法匹配 两个小气泡会组成一个大气泡,此时我们就要匹配之前是否存在大气泡
如果你觉得有所提升,练习下这道题https://ac.nowcoder.com/acm/contest/3005/B</stack>

#include<bits/stdc++.h>
using namespace std;
char b[107];
char c[107];
stack<char>a;
int main()
{
  while(EOF!=scanf("%s",b))
 {
  int n=strlen(b);
  for (int i=0;i<n;++i)
  {
    if (a.empty())///如果为空直接入栈无法匹配
    {
      a.push(b[i]);
    }
    else if (a.top()==b[i])
    {
       if (a.top()==&#39;o&#39;)///同为小气泡
       {
           a.pop();
           if (a.size()&&a.top()==&#39;O&#39;)///融合为大气泡时如果前面存在大气泡,出栈
           {
               a.pop();
           }
           else
           {
               a.push(&#39;O&#39;);///不存在就直接入栈大的
           }
       }
       else if (a.top()==&#39;O&#39;)
       {
           a.pop();
       }
       }
        else
      {
        a.push(b[i]);
      }
  }
  int h=0;
  while (!a.empty())
  {
    c[h++]=a.top();
    a.pop();
  }
  for (int i=h-1;i>=0;--i)
  {
    printf("%c",c[i]);
  }
   cout<<endl;
  }

  return 0;
}

括号匹配代码实现

#include <bits/stdc++.h>
#define ll int
using namespace std;
const int maxn=1000010;
char s[maxn];
int main()
{
  scanf("%s",s);///输入字符串
  ll len=strlen(s);///字符串长度
  stack<char>p;///stl中的栈
  char tmp;
  for (int i=0;i<len;++i)
  {
      if (p.empty())///最先一个元素直接入栈
      {
          p.push(s[i]);
      }
      else
      {
          tmp=p.top();///直接取栈顶的括号,如果有相同的括号与其匹配
          if (tmp=='['&&s[i]==']'||tmp=='('&&s[i]==')'||tmp=='{'&&s[i]=='}')
          {
                p.pop();///直接删除匹配到的括号
          }
          else p.push(s[i]);///如果没有匹配项直接放到栈顶
      }
  }
  if(p.empty())///全部消除完毕
  {
      cout<<"Yes"<<endl;
  }
  else cout<<"No"<<endl;
  return 0;
}